数组的最大化

时间:2014-02-11 17:01:45

标签: c segmentation-fault

我在尝试创建一个大小为10000000的数组时不断获得segfalut。

unsigned char anal1[10000000];

我必须为malloc提供如此巨大的变量吗?

1 个答案:

答案 0 :(得分:1)

选项#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,因此无法确切地告诉您如何配置它)。