以下代码正确地释放了100个整数的内存,这几乎是常识。
int* ip = new int[100];
delete [] ip;
我认为即使是用户定义的类也可以:
Node* ip = new Node[100];
delete [] ip;
在第一种情况下,是否在编译时确定要释放的内存大小(400字节)?基本上,内部发生了什么?
在第二种情况下,是否会在100个对象中的每一个上调用Node
的析构函数?
基本上,我一直在使用这种语法,但从来没有理解内部发生了什么,现在我很好奇。
答案 0 :(得分:7)
size_t n;
std::cin >> n;
a = new int[n];
// do something interesting
delete[] a;
struct Foo {
~Foo() { std::cout << "Goodbye, cruel world.\n"; }
};
// in main
size_t n;
std::cin >> n;
Foo *a = new Foo[n];
delete[] a;