Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 初始化2d阵列时出现SEGFULT_C_Arrays_Pointers_Multidimensional Array - Fatal编程技术网

C 初始化2d阵列时出现SEGFULT

C 初始化2d阵列时出现SEGFULT,c,arrays,pointers,multidimensional-array,C,Arrays,Pointers,Multidimensional Array,我无法在这个简单的数组初始化中找到错误。 程序在字段[x][y]=''上出现segfault时崩溃、x和y(我使用代码::块调试器) /*初始化数据结构*/ 字符**字段; int field_WITH=5,field_height=5; field=malloc(sizeof(char*)*字段宽度); 对于(x=0;x char*可能是演员吗?应该是这样吗 field = (char**)malloc(sizeof(char*)*field_width); 编辑 malloc可以返回nul

我无法在这个简单的数组初始化中找到错误。 程序在
字段[x][y]=''上出现segfault时崩溃、x和y(我使用代码::块调试器)

/*初始化数据结构*/
字符**字段;
int field_WITH=5,field_height=5;
field=malloc(sizeof(char*)*字段宽度);
对于(x=0;x
char*
可能是演员吗?

应该是这样吗

field = (char**)malloc(sizeof(char*)*field_width);
编辑


malloc
可以返回null,因此检查
field[x]=malloc(sizeof(char)*field\u height)是值得的
内存块有效。

我实际上简化了代码段。
字段宽度
没有初始化。我很惊讶这在生成过程中没有发出警告。我真的不知道为什么当x=0时它会生成segfault


但是我的问题已经解决了。谢谢大家,很抱歉这么简单…

在初始化
字段宽度之前,它可能包含随机数据。然后在
malloc
语句中使用
field\u width
。编译器可以做任何它想做的事情,从跳过
malloc
到使用任何垃圾碰巧存储在
field\u width
,或者更糟的/奇怪的东西中。无论如何,如果调用未运行或返回
NULL
(例如
field\u width
包含的值太大而无法
malloc
ed),则不太可能获得所需的
malloc
调用当C++中的代码错误>代码>字段>代码>时,它不太可能指向有效内存。当循环引用中的代码< >代码>字段>代码时,这会导致一个StError。不需要显式地从
void*
转换到C.in(ANSI)中的另一个指针C,不需要抛出Maloc的结果。参见不像C++,您不需要从“代码>空白”*/CODE显式地转换到C.中的另一个指针,它没有初始化的<代码>字段宽度> /COD>,这可能发生了很大的值,因此<代码> MalOC/<代码>失败。l代码?我没有检查。按照你的建议我检查了,事实上,这就是失败的原因。谢谢你的建议。我必须记住另一个好习惯!
field = (char*) malloc(sizeof(char*)*field_width);
field = (char**)malloc(sizeof(char*)*field_width);