gpt4 book ai didi

c++ - 是否有必要为 char 数组调用 delete[] 与 delete?

转载 作者:可可西里 更新时间:2023-11-01 18:40:26 27 4
gpt4 key购买 nike

我正在使用一个同事编写的库,发现 valgrind 正在吐出与 delete 相关的错误。

问题是有像这样的字符数组分配

char* s = new char[n];

稍后跟进 delete s

而不是 delete[] s

他告诉我,区别实际上是 delete[] s 会在 s 中的每个位置调用对象的析构函数(如果它有的话),在这种情况不是因为它是原始类型。我相信这是真的。

所以 delete s 本身并不是真正的错误,valgrind 只是非常彻底。

它仍然肯定会释放与 s 关联的所有内存吗?

最佳答案

如果您使用 new[] 分配数组,则必须使用 delete[] 销毁它。一般来说,函数 operator delete(void*)operator delete[](void*) 不能保证相同。

引用here

关于c++ - 是否有必要为 char 数组调用 delete[] 与 delete?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3681084/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com