我有一个主函数,它有全局数组
unsigned int MainArray [800];
然后程序调用具有本地
unsigned int FunctionArray [400];
我没有足够的记忆空间。
但是在调用函数时不使用
MainArray
,内部数据不重要,使用函数后也不需要FunctionArray
。如何在
FunctionArray
使用的相同内存分配上声明MainArray
?当我在main中声明
MainArray [800];
时,随后其他函数将无法访问数据。 最佳答案
如果您想让mainArray
中的数据进入程序的后期状态,即在执行function
之后,那么您不能说“调用函数时主数组的数据不重要”,因为它在之后很重要。
如果您正在考虑一种方法来“功能阵列可以在主阵列使用的相同内存分配上声明”,那么即使有一种方法,mainArray
的数据也将被销毁,正如您所说,这将是您在以后的程序中所需要的。
如果你以后不需要main的数据,你可以做一件事,
将数组定义为main()
外部的指针,
unsigned int * MainArray;
然后在
main()
中使用所需大小动态分配它。当阵列的需求完成时,只需free
内存。空间将可供进一步分配。如果在执行具有
mainArray
的函数之后而不是之前需要functionArray
,请在执行函数之后为mainArray
分配内存。在控件从函数返回之前,在函数和内存中也使用localfunctionArray
作为指针。这样,程序在执行该函数时不会占用free
的空间,并且当函数完成执行时,mainArray
不会占用任何空间。但是如果在函数执行之前和之后都需要mainArray,我认为没有办法解决内存问题。。