缺少存储数组地址的内存

Lack of memory for array addresses

本文关键字:内存 组地址 数组 存储      更新时间:2023-10-16

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

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

但是它似乎为所有数组值分配了一些指针/地址,而没有在处理完成后立即删除它们。

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

如何摆脱他们每次?我有内存使用不足,不希望我的程序崩溃,因为没有使用的内存!

由于这些是堆栈分配的,因此它们将在函数存在后被清除。

如果你担心每次使用这个函数时都会发生这个创建/销毁,那么把这个放在你的函数中:

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

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

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

我建议如果5个双精度数组导致内存不足,那么您使用的是没有太多内存的机器。或者,它可能会把你推到边缘,因为其他东西正在使用所有的内存。是你的程序吗?