在这种情况下,删除指针数组期间会发生什么?
What happens during delete of array of pointers in this case?
如果我以下一种方式定义数组:char** array=new char*[3];
,我像这样初始化数组,例如:
for(int i=0; i<3;i++){
array[i]=new char[5];
}
之后,我做:
delete[] array;
删除期间会发生什么?
这会导致内存泄漏:仅释放array
的内存,但在程序关闭之前不会释放为单元保留的内存。
您应该将每个new
与delete
匹配:
for(int i=0; i<3;i++){
delete[] array[i];
}
delete[] array;
如果您从某个函数收到指针,则需要知道其大小才能释放所有内存。
为了避免手动处理内存,您可以使用共享指针向量 (std::vector<std::shared_ptr<char>
(,或者在此特定情况下,使用字符串 (std::vector<std::string>
(。
相关文章:
- 在这种情况下,"typename..."意味着什么?
- 在这种情况下,int**在C中是什么意思
- 在这种情况下,括号有什么好处?
- 在这种情况下,#define 的作用是什么?
- 在这种情况下,我们可以使用静态而不是朋友吗,还有其他解决方案是什么
- 在这种情况下,删除指针数组期间会发生什么?
- 在这种情况下,有什么正确的方法可以实现锁定吗?
- 在这种情况下,* 有什么作用?:
- 在这种情况下,"使用"在做什么,正在存储什么?
- 在这种情况下,在"this"前面加上星号有什么作用?
- 在这种情况下,从左到右的结合性是什么意思
- 什么是错误C2039,在这种情况下它意味着什么
- 这个错误一般意味着什么?以及在这种情况下我如何解决它
- 编译器在这种情况下会做什么
- 在这种情况下,>=是什么意思
- 在这种情况下,溢出是什么意思
- 在这种情况下,为函数赋值有什么用
- 有人能向我解释一下在这种情况下发生了什么吗
- 在这种情况下,sizeof(int) 返回什么
- 警告C4309 -它是什么意思,在这种情况下可以忽略它