尝试创建大小为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/

10-11 10:53