尝试创建大小为10000000的数组时,我一直在获取segfalut。
unsigned char anal1[10000000];
我必须为如此巨大的变量分配malloc吗?
最佳答案
选项#1-局部变量-堆栈必须足够大以容纳它:
void func(...)
{
unsigned char anal1[10000000];
...
}
选项#2-静态局部变量-数据段必须足够大以容纳它:
void func(...)
{
static unsigned char anal1[10000000];
...
}
选项#3-全局变量-数据段必须足够大以容纳它:
unsigned char anal1[10000000];
选项#4-静态全局变量-数据段必须足够大以容纳它:
static unsigned char anal1[10000000];
选项#5-如果在运行时分配它,则堆必须足够大以容纳它:
unsigned char* anal1 = malloc(10000000);
无论选择哪个选项,您都可能需要在项目设置中声明相应的要求(不确定所使用的IDE,因此无法确切告诉您如何进行配置)。
关于c - 数组的最大大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21708203/