c++中,可以用delete释放一个数组的空间吗?
数组是这样定义的:charaa[100];那用完之后如何释放这100个字节的空间呢?我记得delete只能释放指针空间。...
数组是这样定义的:
char aa[100];
那用完之后如何释放这100个字节的空间呢?我记得delete只能释放指针空间。 展开
char aa[100];
那用完之后如何释放这100个字节的空间呢?我记得delete只能释放指针空间。 展开
8个回答
展开全部
用delete释放的只能是用new动态分配的数组空间,若数组不是动态分配的则不能用delete释放。
举两个例子详细说明一下:
int a[100];
这个数组a是不能用delete释放空间的,因为这个数组a在声明时就已经说明了空间的大小,在最后程序会自动释放这个空间。
int *b;
b=new int[100];
这个要在最后用delete []b; 语句来动态释放,因为数组b是一个动态数组,数组空间是动态分配的,程序是不能自动释放的,所以要自己用delete来释放。
举两个例子详细说明一下:
int a[100];
这个数组a是不能用delete释放空间的,因为这个数组a在声明时就已经说明了空间的大小,在最后程序会自动释放这个空间。
int *b;
b=new int[100];
这个要在最后用delete []b; 语句来动态释放,因为数组b是一个动态数组,数组空间是动态分配的,程序是不能自动释放的,所以要自己用delete来释放。
展开全部
这样定义数组的话是在栈上分配内存,超过作用域范围的时候会自动释放掉,使用new操作符分配的内存,是在堆上,需要使用delete释放,因此如果像你那样定义数组的话,不必释放内存
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不行
运算符delete必须用于先前new分配的有效指针,如果用delete释放的内存空间不是用new申请的,可能会引起程序运行错误。
char aa[100];
这样定义的,不用手动释放内存空间 。
如果是
char *aa;
aa=new char[100];
.
.
.
.
delete []aa;
运算符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])
如char *p = new char[10];
要用delete []p;释放
而其它的不用(如LZ举的例子 char aa[100])
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以的。
如果这个数据是在堆上分配的内存可以用 delete来释放
delete []aa;
这样就可以了。
如果这个数据是在堆上分配的内存可以用 delete来释放
delete []aa;
这样就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询