c++中,可以用delete释放一个数组的空间吗?
答案:5 悬赏:10 手机版
解决时间 2021-03-20 15:50
- 提问者网友:泪痣哥哥
- 2021-03-19 22:10
c++中,可以用delete释放一个数组的空间吗?
最佳答案
- 五星知识达人网友:夜风逐马
- 2021-03-19 23:28
用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来释放。
全部回答
- 1楼网友:第四晚心情
- 2021-03-20 02:40
只有通过new申请的内存块才需要用delete释放
如char *p = new char[10];
要用delete []p;释放
而其它的不用(如LZ举的例子 char aa[100])
如char *p = new char[10];
要用delete []p;释放
而其它的不用(如LZ举的例子 char aa[100])
- 2楼网友:往事埋风中
- 2021-03-20 02:18
这样定义的,不需要手动释放,也不可以手动释放,会出错
如果是这样的才可以
char *aa;
aa=new char[100];
//...
delete [] aa;
如果是这样的才可以
char *aa;
aa=new char[100];
//...
delete [] aa;
- 3楼网友:动情书生
- 2021-03-20 01:08
不行
运算符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;
- 4楼网友:玩家
- 2021-03-20 00:30
这样定义数组的话是在栈上分配内存,超过作用域范围的时候会自动释放掉,使用new操作符分配的内存,是在堆上,需要使用delete释放,因此如果像你那样定义数组的话,不必释放内存
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯