asb*_*bxl 7 c++ size dynamic-arrays delete-operator
当我在C++(T * p = new T[n])中分配动态数组时,我使用delete [] p释放分配的内存.显然,系统知道数组大小(按顺序调用n次T的析构函数).这在其他地方讨论过.例如,delete []"知道"操作数数组的大小是多少?.这是实施细节.
但为什么不决定提供这些信息呢?
谢谢
因为 new 不是动态数组的唯一来源(它与对象指针共享相同的签名),所以它必须与 C 兼容。
想一想:
void seem_good(MyStruct* d) {
mess_with(d[3]);
}
Run Code Online (Sandbox Code Playgroud)
编译器无法检查是否要从其他语言调用。
顺便说一句,当不需要与其他语言互操作时,C++有自己的解决方案:std::array。