C++使用delete []删除指针?

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)


Pio*_*cki 5

你应该删除它[].很简单delete:

Foo *ptr;
ptr = new Foo;
delete ptr;
Run Code Online (Sandbox Code Playgroud)