我正在用C ++编写一些内存管理代码,首先我使用char *ptr = new char[1024]
而不是void *malloc(unsigned int size)
来获取缓冲区,此后,我的代码中没有数组的概念,所有操作是通过指针完成的。
但是当我想释放它们时,我有些担心。据我所知,C ++要求程序员在使用delete[]
来获取内存时使用new *type*[]
,但是目前我只有一个指针(在上述情况下为ptr
)。在编码之前,我想为什么使用delete[]
是在每个元素上调用析构函数。但是我不确定pod数组上的delete
和delete[]
之间是否有区别。
那么在Pod数组上使用delete ptr
是否安全?
答案 0 :(得分:3)
new
随delete
一起提供。 new []
随附delete []
。您没有其他option:
由delete-expressions调用以先前取消分配存储 分配给单个对象。标准库的行为 除非ptr为null,否则未定义此函数的实现 指针或以前从标准库中获得的指针 运算符new(size_t)或运算符new(size_t, std :: nothrow_t)。
混合这些运算符将导致不确定的行为。