Foo* set = new Foo[100];
// ...
delete [] set;
Run Code Online (Sandbox Code Playgroud)
您没有将数组的边界传递给delete[].但是这些信息存储在哪里?它是标准化的吗?
可能重复:
C编程:free如何知道要释放多少?
怎么delete知道它有多少字节可以免费?我读到在new返回的实际指针地址之前有一些块,其中包含块地址详细信息.
这里的任何人都知道这个块有多少字节或者该块的格式是多少?
我看到了一个使用函数的例子:在cpp中删除,我并没有完全理解它.代码是:
class Name {
const char* s;
//...
};
class Table {
Name* p;
size_t sz;
public:
Table(size_t s = 15){p = new Name[sz = s]; }
~Table { delete[] p; }
};
Run Code Online (Sandbox Code Playgroud)
什么是命令的具体行动:delete[] p;?
我认为目的是删除容器表中的所有指针.
括号中delete[]给出了一个线索,它删除了一个指向Name的指针数组,但没有指定数组的大小,那么析构函数如何"知道"要删除多少指针?