【发布时间】:2012-02-01 20:12:06
【问题描述】:
我似乎无法弄清楚我做错了什么。
int main(int argc, char **argv) {
int height = 4, width = 6;
int **map;
map = (int **)(malloc(height * sizeof(int*)));
for(i = 0; i < height; i++) {
map[i] = (int *)(malloc(width * sizeof(int)));
}
fill_map(&map, height, width);
}
void fill_map(int ***map, int height, int width) {
int i, k, character;
for(i = 0; i < height; i++) {
k = 0;
while((character = getchar()) != '\n') {
*map[i][k] = character;
k++;
}
}
}
我在内部 while 循环中的 fill_map 中遇到了段错误,为什么?
【问题讨论】:
-
提高编译器的警告级别,并注意警告!
-
编译器警告对这个问题没有多大帮助 - 我没有收到来自 GCC 的
-Wall -Wextra或来自 MSVC 的-Wall -W4的有用警告。
标签: c arrays multidimensional-array segmentation-fault