我在尝试创建一个大小为10000000的数组时不断获得segfalut。
unsigned char anal1[10000000];
我必须为malloc提供如此巨大的变量吗?
答案 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,因此无法确切地告诉您如何配置它)。