假设您有如下功能:
void foo()
{
char* pt = new char[10];
//do stuff with pt
}
由于指针是在本地创建的,一旦函数终止,内存会被释放吗?或者你真的需要用来delete[]
释放内存吗?
假设您有如下功能:
void foo()
{
char* pt = new char[10];
//do stuff with pt
}
由于指针是在本地创建的,一旦函数终止,内存会被释放吗?或者你真的需要用来delete[]
释放内存吗?
分配有new
/的内存new[]
具有动态存储持续时间。delete
在用户显式调用/之前,它们不会被释放delete[]
。
如果您使用“new”或“new[]”而不使用某种智能指针类,则不会自动释放内存。您需要适当地调用“delete”或“delete[]”来释放它。
不 - 这是内存泄漏。每个都new
应该有一个对应的delete
(并且每个都new[]
应该有一个对应的delete[]
)。
是的,你肯定需要delete[]
. 它可能在同一个函数中或其他地方(如果您选择返回pt
)。
如果您使用容器,例如vector
,那么您不会
std::vector< char > pt( 10 );
你真的需要使用delete[]
.