-1

我有一个实时应用程序,它会生成一些要处理的值。在我使用的函数之一中,我每次都声明,而不是作为全局函数声明如下:

#define BUFFER 25
double A[BUFFER];
double B[BUFFER];
double C[BUFFER];
double TOTAL[BUFFER];
double ERRORS[BUFFER];

但似乎它正在为所有数组值分配一些指针/地址,而不会在处理完成后立即摆脱它们。

如果我认为项目正​​在使用包含上述声明的函数,并且我的项目每隔一秒更新一次新值,持续 30 分钟:因此, 使用了 25*5*60*30=225K 无用内存

如何每次都摆脱它们?我的内存使用不足,不希望我的程序因为未使用的内存而崩溃!

4

2 回答 2

2

由于这些是堆栈分配的,因此一旦您的函数存在,它们就会被清除。

如果您担心每次使用该函数时都会发生这种创建/销毁,请将其放入您的函数中:

static double A[BUFFER];
static double B[BUFFER];
static double C[BUFFER];
static double TOTAL[BUFFER];
static double ERRORS[BUFFER];

这不是很好的编程实践(对于初学者来说,它是非常单线程的!)但这意味着数组只创建一次,一旦程序退出就销毁。

但是,回到您的问题,我真的不明白这可能是您遇到任何内存问题的原因:您消耗的量很小。

于 2013-06-14T12:08:10.983 回答
0

我建议如果五个数组的五个双精度数导致您内存不足,那么您正在使用一台没有太多内存的机器。或者,它可能会将您推到边缘,因为其他东西正在使用所有内存。是你的程序吗?如果是这样,请对其进行概要分析。

于 2013-06-14T12:12:52.493 回答