阵列地址缺少内存

时间:2013-06-14 12:04:54

标签: c++ visual-studio-2010 memory memory-leaks

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

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

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

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

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

2 个答案:

答案 0 :(得分:2)

由于这些是堆栈分配的,一旦你的功能存在,它们将被清除。

如果您担心每次使用该功能时都会发生这种创建/破坏,请将其放入您的功能中:

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

这不是很好的编程习惯(对于初学者来说,它是非常单线程的!)但这意味着只有一个程序退出后,数组才会被创建一次并被销毁。

但是,回到你的问题,我真的看不出这可能是你有任何内存问题的原因:你消耗的数量很少。

答案 1 :(得分:0)

我建议如果五个双打的五个阵列导致你内存不足,那么你正在使用没有太多内存的机器。或者,它可能会推动你超越边缘,因为其他东西正在使用所有内存。这是你的计划吗?如果是,请对其进行分析。