【发布时间】:2020-03-27 19:50:29
【问题描述】:
我正在用 C++ 编写一些内存管理代码,一开始我使用char *ptr = new char[1024] 而不是void *malloc(unsigned int size) 来获取缓冲区,此后,我的代码中没有数组的概念,所有操作都是由指针。
但是当我想释放他们时,我有些担心。据我所知,C++ 要求程序员在使用new *type*[] 获取内存时使用delete[],但此时我只得到一个指针(在上面的例子中是ptr)。在编码之前,我认为为什么使用delete[] 是在每个元素上调用析构函数。但我不确定 pod 阵列上的 delete 和 delete[] 是否有区别。
那么在 pod 阵列上使用 delete ptr 是否安全?
【问题讨论】:
-
将
new[]与普通的delete匹配会导致未定义的行为,故事结束。只是不要做这样的事情。 -
@Someprogrammerdude 简洁,谢谢。
-
我很抱歉可能听起来有点粗鲁,但真的没什么好说的了 :)
-
不安全。 delete vs delete[] operators in C++、The difference between delete and delete[] in C++ 等可能重复。有关问题的具体示例,请参阅 Raymond Chen 的 Mismatching scalar and vector new and delete。
标签: c++ pointers memory-management delete-operator