在POD数组上使用delete而不是delete []是否安全?

时间:2019-12-03 07:08:26

标签: c++ pointers memory-management delete-operator

我正在用C ++编写一些内存管理代码,首先我使用char *ptr = new char[1024]而不是void *malloc(unsigned int size)来获取缓冲区,此后,我的代码中没有数组的概念,所有操作是通过指针完成的。

但是当我想释放它们时,我有些担心。据我所知,C ++要求程序员在使用delete[]来获取内存时使用new *type*[],但是目前我只有一个指针(在上述情况下为ptr)。在编码之前,我想为什么使用delete[]是在每个元素上调用析构函数。但是我不确定pod数组上的deletedelete[]之间是否有区别。

那么在Pod数组上使用delete ptr是否安全?

1 个答案:

答案 0 :(得分:3)

newdelete一起提供。 new []随附delete []。您没有其他option

  

由delete-expressions调用以先前取消分配存储   分配给单个对象。标准库的行为   除非ptr为null,否则未定义此函数的实现   指针或以前从标准库中获得的指针   运算符new(size_t)或运算符new(size_t,   std :: nothrow_t)。

混合这些运算符将导致不确定的行为。