tan*_*non 5 c++ memory-management new-operator
几乎常见的是,下面的代码正确地释放了100个整数的内存.
int* ip = new int[100];
delete [] ip;
Run Code Online (Sandbox Code Playgroud)
我认为即使对于用户定义的类,它也可以工作:
Node* ip = new Node[100];
delete [] ip;
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,是否要释放的内存大小(400字节),在编译时确定?基本上,内部发生了什么?
在第二种情况下,是否会Node在100个对象中的每一个上调用析构函数?
从本质上讲,我一直在使用这种语法,但从来没有理解内部发生了什么,现在我很好奇.
size_t n;
std::cin >> n;
a = new int[n];
// do something interesting
delete[] a;
Run Code Online (Sandbox Code Playgroud)
struct Foo {
~Foo() { std::cout << "Goodbye, cruel world.\n"; }
};
// in main
size_t n;
std::cin >> n;
Foo *a = new Foo[n];
delete[] a;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3616 次 |
| 最近记录: |