3

假设您有如下功能:

void foo()
{
  char* pt = new char[10];
  //do stuff with pt
}

由于指针是在本地创建的,一旦函数终止,内存会被释放吗?或者你真的需要用来delete[]释放内存吗?

4

5 回答 5

6

分配有new/的内存new[]具有动态存储持续时间。delete在用户显式调用/之前,它们不会被释放delete[]

于 2013-04-18T23:16:08.800 回答
2

如果您使用“new”或“new[]”而不使用某种智能指针类,则不会自动释放内存。您需要适当地调用“delete”或“delete[]”来释放它。

于 2013-04-18T23:08:12.390 回答
1

不 - 这是内存泄漏。每个都new应该有一个对应的delete(并且每个都new[]应该有一个对应的delete[])。

于 2013-04-18T23:08:43.130 回答
1

是的,你肯定需要delete[]. 它可能在同一个函数中或其他地方(如果您选择返回pt)。

如果您使用容器,例如vector,那么您不会

std::vector< char > pt( 10 );
于 2013-04-18T23:13:28.470 回答
0

你真的需要使用delete[].

于 2013-04-18T23:07:32.433 回答