All*_*ang 0 c++ memory-management
以下是C++中的示例代码:
Foo *ptr;
ptr = new Foo;
delete [] ptr;
Run Code Online (Sandbox Code Playgroud)
这会遇到问题吗?什么应该是删除这样的指针和释放内存的正确方法?
谢谢
Rob*_*obᵩ 10
是的,这可能会遇到问题.或不.从技术上讲,它的作用是未定义的.
每个人都new必须拥有一个delete; 每个人都new[]必须拥有一个delete[].
在您的特定实例中,正确的代码路径可能是:
Foo *ptr;
ptr = new Foo;
delete ptr;
Run Code Online (Sandbox Code Playgroud)
要么
Foo *ptr;
ptr = new Foo[7];
delete[] ptr;
Run Code Online (Sandbox Code Playgroud)