在以下示例代码中:
它如何知道要删除多少个元素?听说这些信息存储在已分配的表开始之前或其他某个地方的一种头文件中 - 但在这种情况下,为什么我们不能通过像size(p)这样的函数访问这个值,它会返回10?有没有特殊的原因?这些头文件中还存储着哪些其他信息?是操作系统特定的?编译器特定的? 谢谢。
可能是重复问题:
delete[]如何“知道”操作数数组的大小?
请问这段代码:
int* p = new int[10];
delete[] p;
它如何知道要删除多少个元素?听说这些信息存储在已分配的表开始之前或其他某个地方的一种头文件中 - 但在这种情况下,为什么我们不能通过像size(p)这样的函数访问这个值,它会返回10?有没有特殊的原因?这些头文件中还存储着哪些其他信息?是操作系统特定的?编译器特定的? 谢谢。
::operator delete[](void *, size_t)
,你实际上可以看到分配区域的真实大小。 - Kerrek SB