rav*_*ven 7 c++ arrays delete-operator
我之后,说
Foo* array = new Foo[N];
我总是这样删除它
delete[] array;
但是,有时候我这样看过:
delete[N] array;
由于它似乎在编译和工作(至少在msvc2005中),我想知道:正确的方法是什么?为什么它以其他方式编译呢?
Nav*_*een 13
您可以检查此MSDN链接:delete [N] operator.该值被忽略.
编辑 我在VC9上尝试了这个示例代码:
int test()
{
std::cout<<"Test!!\n";
return 10;
}
int main()
{
int* p = new int[10];
delete[test()] p;
return 0;
};
Run Code Online (Sandbox Code Playgroud)
输出是:测试!!
因此计算表达式但忽略返回值.至少我很惊讶,我想不出为什么这是必需的.
Mik*_*our 10
delete [N] array是无效的.它没有在C++标准中定义:第5.3.5节将删除表达式定义为delete expr或delete [] expr,而不是其他任何内容.它不能在gcc(版本4.1.2)上编译.至于为什么它在Visual C++中编译:问问微软.
无论第二种情况是否正确,我建议使用第一种情况,因为它不容易出错.
Visual Studio编译了很多不应该的东西.
| 归档时间: |
|
| 查看次数: |
2931 次 |
| 最近记录: |