假设您有以下功能:
void foo()
{
char* pt = new char[10];
//do stuff with pt
}
由于指针是在本地创建的,一旦函数终止,是否会释放内存?或者你真的需要使用delete[]
来释放记忆吗?
答案 0 :(得分:6)
使用new
/ new[]
分配的内存具有动态存储持续时间。在用户明确调用delete
/ delete[]
之前,不会取消分配。
答案 1 :(得分:2)
如果在不使用某种智能指针类的情况下使用“new”或“new []”,内存将不自动释放。你需要适当地调用“删除”或“删除[]”来释放它。
答案 2 :(得分:1)
不 - 这是内存泄漏。每个new
应该有相应的delete
(并且每个new[]
都应该有相应的delete[]
。
答案 3 :(得分:1)
是的,你肯定需要delete[]
。它可能在同一个函数中或其他位置(如果您选择返回pt
)。
如果您使用容器,例如vector
,然后你没有
std::vector< char > pt( 10 );
答案 4 :(得分:0)
您确实需要使用delete[]
。