假设你有一个函数:
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[]
后才会被释放。
malloc()
被替换了。 - rliuoperator new
更像是 malloc
的替代品。 - Joseph Mansfield是的,你绝对需要使用delete[]
。它可以在同一个函数中或其他地方(如果你选择返回pt
)。
如果你使用容器,比如vector
,那么你就不需要使用它。
std::vector< char > pt( 10 );
new
都应该有相应的delete
(每个new[]
都应该有相应的delete[]
)。你真的需要使用delete[]
。