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

Memory allocation in C++ without the 'new' keyword

本问题已经有最佳答案,请猛点这里访问。

我有一些由Matlab编码器生成的代码。它包括一些这种类型的变量定义:

1
int tmp_size[400];

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

变量是在堆上还是在堆栈上分配的?这等同于以下内容吗?

1
int* tmp_size = new int[400];

为了内存管理的目的,最好用new重写这些变量定义,比如int* tmp_size = new int[400];

我注意到内存是由我的程序分配的,它永远不会被释放。这会导致内存泄漏吗?


这些变量属于"自动"范围。该语言保证程序将在当前块末尾释放该存储。它可能在堆栈上,但没有任何内容强制实现使用堆栈。底线:没有泄漏。