C ++ delete []运算符

时间:2010-04-28 09:34:14

标签: c++ arrays dynamic new-operator delete-operator

这是使用delete []运算符的正确方法吗?

int* a=new int[size];
delete[] a;

如果是,Who(编译器 GC 或谁)将确定新创建的数组的大小?它会在哪里存储数组大小?

由于

3 个答案:

答案 0 :(得分:2)

对于分配的每个内存块,内存分配器存储块的大小(这就是为什么分配许多小块与例如一个大块相比效率低的原因)。当 delete 释放内存时,分配器会知道指针指向的内存块有多大。

答案 1 :(得分:2)

从技术上讲,这种用法完全有效。但是,像这样新建数组通常是一个坏主意,你应该使用std :: vector。

答案 2 :(得分:0)

顺便说一句,每当你想写new T[size]时,你应该使用std::vector<T>。使用动态数组的本地指针,在抛出异常的情况下,很难保证正确的内存释放。