我有一个实时应用程序,它会生成一些要处理的值。 在我正在使用的其中一个函数中,我每次都声明,而不是作为全局函数的声明:
#define BUFFER 25
double A[BUFFER];
double B[BUFFER];
double C[BUFFER];
double TOTAL[BUFFER];
double ERRORS[BUFFER];
但似乎它正在为所有数组值分配一些指针/地址,而不会在完成治疗后立即删除它们。
如果我认为项目正在使用包含上述声明的函数,并且我的项目每隔一秒更新一次新值,持续30分钟:因此, 25 * 5 * 60 * 30 = 225K使用无用的记忆
如何每次摆脱它们?我的内存使用不足,不希望我的程序因为未使用的内存而崩溃!
答案 0 :(得分:2)
由于这些是堆栈分配的,一旦你的功能存在,它们将被清除。
如果您担心每次使用该功能时都会发生这种创建/破坏,请将其放入您的功能中:
static double A[BUFFER];
static double B[BUFFER];
static double C[BUFFER];
static double TOTAL[BUFFER];
static double ERRORS[BUFFER];
这不是很好的编程习惯(对于初学者来说,它是非常单线程的!)但这意味着只有一个程序退出后,数组才会被创建一次并被销毁。
但是,回到你的问题,我真的看不出这可能是你有任何内存问题的原因:你消耗的数量很少。
答案 1 :(得分:0)
我建议如果五个双打的五个阵列导致你内存不足,那么你正在使用没有太多内存的机器。或者,它可能会推动你超越边缘,因为其他东西正在使用所有内存。这是你的计划吗?如果是,请对其进行分析。