没有'new'关键字的C++中的内存分配

kir*_*off -2 c++ memory-leaks memory-management new-operator matlab-coder

我有一些由MATLAB Coder生成的代码.它包括这种类型的一些变量定义:

int tmp_size[400];
Run Code Online (Sandbox Code Playgroud)

在方法范围结束之前,不会显式删除这些变量.

变量是在堆还是堆栈上分配的?这相当于以下几点吗?

int* tmp_size = new int[400];
Run Code Online (Sandbox Code Playgroud)

是否最好用内存管理来重写这些变量定义new,比如int* tmp_size = new int[400];

我注意到内存是由我的程序分配的,永远不会被释放.这可能是造成内存泄漏的原因吗?

bma*_*ies 5

这些变量的范围是"自动的".该语言保证您的程序将在当前块的末尾释放此存储.它可能在堆栈上,但没有任何东西迫使实现使用堆栈.底线:没有泄漏.

  • @juanchopanza:"阵列可以是在'堆’的话,也就是说,它在所分配的对象的成员函数被分配所述'堆’" - 一个对象的存储器位置对成员函数的本地变量分配无关.一个恰当的例子是,如果数组是堆上分配的对象的成员变量. (2认同)