你需要解除分配一组基元吗?

时间:2015-11-23 00:11:32

标签: c++ memory-management

如果我有一个基本类型的数组,例如:int A [] = new int [10]; 如果没有释放会产生内存泄漏吗?

这是最近突然出现的一个问题。我敢肯定我是在学校里学到的,但是因为我使用过C / C ++已经很久了,所以我记不起来了。实际上,使用“new”创建任何对象会将该对象放在堆上,该堆必须在某个时刻被释放/销毁。我记得用对象数组做这个,这样做是有意义的,但我永远不记得需要释放一个int或String数组。那么原始数组的情况也是如此吗?

感谢

威尔

1 个答案:

答案 0 :(得分:4)

如果您使用new分配了某些内容,并且未将其移交给智能指针或其他内容进行管理,则必须delete。它是一个对象还是一个原始类型并不重要。

小心“#34; free"这里。对于使用free分配的任何内容,您不应使用函数new。另外,请务必了解deletedelete[]之间的区别。

更好的是,使用std::vector代替动态数组,您不必担心删除任何内容。