如:
Person *ppn = new Person[100];
...
delete[] ppn;
昨天看书,发现删除所有new出来的数组内存应该这样删除
对于如int,char型的c++内建类型的数组也需要这样删除吗?
如
char* pstr = new char[100];
...
delete[] pstr;
7 个解决方案
#1
用new分配的内存空间要用delete收回。如果是用malloc分配的话,就要用free收回了
#2
new 用了[];
...
所以delete也用 []
...
所以delete也用 []
#3
我确实看到说法,对内置类型调用delete不需要加[],但是官方文档中的例子是加上的。
个人认为还是加上好,自己看着也清楚。
个人认为还是加上好,自己看着也清楚。
#4
要加上,否则造成内存泄漏的。
用一些代码测试工具,会指出这种错误。
用一些代码测试工具,会指出这种错误。
#5
我找到那段代码了(引用他人):
// String的析构函数
String::~String(void)
{
delete [] m_data;
// 由于m_data是内部数据类型,也可以写成 delete m_data;
}
但还是加上吧。不仅表述清晰,而且对于内置类型和自定义类型的一致性是C++追求的目标之一。
// String的析构函数
String::~String(void)
{
delete [] m_data;
// 由于m_data是内部数据类型,也可以写成 delete m_data;
}
但还是加上吧。不仅表述清晰,而且对于内置类型和自定义类型的一致性是C++追求的目标之一。
#6
我曾经做过测试,内置类型使用delete不会有任何问题,当然还是建议你使用[],养成良好的习惯
#7
多谢!
#1
用new分配的内存空间要用delete收回。如果是用malloc分配的话,就要用free收回了
#2
new 用了[];
...
所以delete也用 []
...
所以delete也用 []
#3
我确实看到说法,对内置类型调用delete不需要加[],但是官方文档中的例子是加上的。
个人认为还是加上好,自己看着也清楚。
个人认为还是加上好,自己看着也清楚。
#4
要加上,否则造成内存泄漏的。
用一些代码测试工具,会指出这种错误。
用一些代码测试工具,会指出这种错误。
#5
我找到那段代码了(引用他人):
// String的析构函数
String::~String(void)
{
delete [] m_data;
// 由于m_data是内部数据类型,也可以写成 delete m_data;
}
但还是加上吧。不仅表述清晰,而且对于内置类型和自定义类型的一致性是C++追求的目标之一。
// String的析构函数
String::~String(void)
{
delete [] m_data;
// 由于m_data是内部数据类型,也可以写成 delete m_data;
}
但还是加上吧。不仅表述清晰,而且对于内置类型和自定义类型的一致性是C++追求的目标之一。
#6
我曾经做过测试,内置类型使用delete不会有任何问题,当然还是建议你使用[],养成良好的习惯
#7
多谢!