【发布时间】:2014-04-07 03:49:45
【问题描述】:
我正在尝试使用 malloc 创建一个二维数组。 我的代码似乎正确,但是当我尝试设置值时,我收到“分段错误”消息。
#include <stdio.h>
#include <stdlib.h>
int main(){
int i, j;
int **m = (int **) malloc(5 * sizeof(int));
if(m == NULL){
printf("Error");
getchar();
exit(-1);
}
for(i = 0; i < 5; i++){
m[i] = (int *) malloc(5 * sizeof(int));
if(m[i] == NULL){
printf("Error");
getchar();
exit(-1);
}
}
for(i = 0; i < 5; i++){
for(j = 0; j < 5; j++){
printf("%d %d\n", i, j);
m[i][j] = 0;
}
}
for(i = 0; i < 5; i++){
for(j = 0; j < 5; j++){
printf("%d ", m[i][j]);
}
printf("\n");
}
}
谢谢。
【问题讨论】:
-
这就是 C 标记为 C++ 的原因
-
我认为你应该修改这个语句来分配一个指针数组:
int **m = (int **) malloc(5 * sizeof(int *)); -
内存泄漏。