-2

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

int tmp_size[400];

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

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

int* tmp_size = new int[400];

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

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

4

1 回答 1

6

这些变量的范围是“自动的”。该语言保证您的程序将在当前块的末尾释放此存储。它可能在堆栈上,但没有什么强制实现使用堆栈。底线:没有泄漏。

于 2014-05-22T12:42:13.433 回答