这样定义数组的话是在栈上分配内存,超过作用域范围的时候会自动释放掉,使用new操作符分配的内存,是在堆上,需要使用delete释放,因此如果像你那样定义数组的话,不必释放内存
不行
运算符delete必须用于先前new分配的有效指针,如果用delete释放的内存空间不是用new申请的,可能会引起程序运行错误。
char
aa[100];
这样定义的,不用手动释放内存空间
。
如果是
char
*aa;
aa=new
char[100];
.
.
.
.
delete
[]aa;
只有通过new申请的内存块才需要用delete释放
如char
*p
=
new
char[10];
要用delete
[]p;释放
而其它的不用(如LZ举的例子
char
aa[100])