c++ - 您是否需要取消分配基元数组?

标签 c++ memory-management

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

这是最近突然出现在我脑海中的一个问题。我确定我在学校学过它,但是我已经有很长时间没有使用 C/C++ 了,我记不清了。实际上,使用“new”创建任何对象都会将该对象放在堆上,必须在某个时候释放/销毁。我记得对对象数组执行此操作并且这样做很有意义,但我不记得需要释放 int 或 String 数组。那么原始数组也是这种情况吗?

谢谢

最佳答案

如果您使用 new 分配了一些东西,并且它没有交给智能指针或其他东西进行管理,您必须 delete 它。它是对象还是原始类型并不重要。

请注意此处的“免费”一词。您不应该对使用 new 分配的任何内容使用函数 free。还要确保您了解 deletedelete[] 之间的区别。

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

关于c++ - 您是否需要取消分配基元数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33861883/

相关文章:

java - 哪一项指示了 java 应用程序的确切内存使用情况

iphone - 所有的类方法都返回一个自动释放的对象吗?

c++ - 与 boost::property_tree XML 解析器一起使用时 boost::coroutine 库崩溃

c++ - 在命令行上使用 Visual Studio 进行编译时如何包含库?

python - 在 C++ 中创建一个 python 对象并调用它的方法

c++ - C++程序在后台运行,没有管理员权限

c++ - 为什么 delete 可以在指向 const 的指针上执行而 free 不能?

c++ - 从 C++ 文件中获取输入

python - Python 是否有堆栈/堆以及如何管理内存?

c++ - 被复制到 vector 中的对象被清除,因为原始预复制已被清除()