缺少存储数组地址的内存
Lack of memory for array addresses
我有一个实时应用程序,它生成一些要处理的值。在我使用的其中一个函数中,我每次都声明,而不是作为全局函数:
#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个双精度数组导致内存不足,那么您使用的是没有太多内存的机器。或者,它可能会把你推到边缘,因为其他东西正在使用所有的内存。是你的程序吗?
相关文章:
- 从 C++ 中的函数返回数组地址问题
- 打印字符数组地址的正确方法
- 字符数组地址和整数数组地址
- 通过指向非多态类型的基类的指针获取已分配内存的地址
- C++返回静态数组地址的函数
- C++ 在 64 位平台中传递字符数组地址
- 获取字符数组地址,然后转换为指针字符
- 如何显示在堆上创建的内存的地址
- 如何指向实际元素而不仅仅是数组地址
- 返回的与局部变量关联的堆栈内存的地址 (C++)
- 如何使用数组地址反转数组
- 链表数组 – 地址簿
- Lua中变量的内存RAM地址
- CUDA:全局内存访问地址
- 数组地址的地址
- 缺少存储数组地址的内存
- 将指针数组地址传递给函数并更新地址中的数据
- 通过复制将数组地址传递给匿名函数失败
- 数组地址不可见
- 不了解示例中的行为 - strcpy() 和返回本地数组地址的函数