C++新手求助:动态数组删除报错,无法删除数组的解决方法
正确删除C++动态数组的方法
嘿,别担心,刚接触C++动态内存的时候谁都踩过这种坑!我来给你掰扯清楚问题出在哪,以及怎么正确解决。
首先,先看你之前的错误操作:
delete array[5];:这里array[5]是在访问数组的第6个元素(因为C++数组索引从0开始,你的数组只有5个元素,索引范围是0到4),而且它的类型是int,而delete关键字只能用来释放指针指向的动态分配内存,不是用来删除单个int值的,所以编译器肯定报错。delete [5]array;:这个语法完全不对,C++里释放数组的时候不需要指定大小——因为你用new[]分配内存时,编译器已经悄悄记录了数组的长度,释放时会自动处理。
正确的删除方式
你只需要用delete[]加上你的数组指针就行,就像这样:
delete[] array;
额外提醒
- 配对使用:永远记住,用
new[]分配的数组必须用delete[]释放;用单个new分配的对象(比如int* num = new int;)才用单个delete释放,混着用会导致内存泄漏或者未定义行为。 - 避免野指针:释放内存后,最好把指针置为
nullptr,防止后续不小心访问已经被释放的内存:delete[] array; array = nullptr;
这样就不会再报错啦,以后处理动态数组记住这个配对规则就好~
内容的提问来源于stack exchange,提问作者user9708849
相关产品推荐
相关产品推荐

