以下是我从MSDN中复制的有关new运算符的内容:
该
new操作者不能被用于分配的功能,但它可用于指针分配给功能.下面的示例分配然后释放七个指向返回整数的函数的数组的数组.Run Code Online (Sandbox Code Playgroud)int (**p) () = new (int (*[7]) ()); delete *p;
好吧,第一行没有什么奇怪的,它为函数分配了一个指针数组,但我只是不明白第二行如何删除该数组?我认为它应该是:
delete[] *p;
Run Code Online (Sandbox Code Playgroud)
有谁能解释一下?
坦率地说,正确的答案写在avakar的评论中.正确的代码是
delete[] p;
Run Code Online (Sandbox Code Playgroud)
delete *p; 有两个原因是不正确的:
delete[]所有动态分配的数组.使用
delete将导致未定义的行为.| 归档时间: |
|
| 查看次数: |
271 次 |
| 最近记录: |