关于delete函数

来源:百度知道 编辑:UC知道 时间:2024/05/24 04:29:33
#include <iostream>;
using namespace std;

int main()
{
char *str ;
str=new char(5);
strcpy(str,"hello");
printf(str);
delete str;
return 0;

}
执行后系统错误,好像是delete,但是该怎么改呢,不能这样用吗,请快些帮帮忙吧

使用 delete 运算符可解除分配使用 new 运算符分配的内存(注意,new、delete不是函数而是操作符!)。
c++中编程的时候经常要用到堆内存的分配,通常使用的操作符是new,这个时候就必然要用到delete去释放申请的内存空间。
此时至少要遵循以下原则:
(1)new和delete是成对出现的。只出现一个是错误的或不规范的写法,即使能编译通过,也会有安全隐患;
(2)使用的new与delete要相同。也就是说如果你在 表达式中使用了 new[],你必须在对应的 表达式中使用 delete[]。如果你在 表达式中使用new,你在对应的 表达式中使用delete即可。
(3)对一个指针只能使用一次运算符delete;

str=new char(5);申请空间太小了吧,光HELLO就5个字符,还得放字符串结束标志符