假设您有如下功能:
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[].