//动态分配空间
int** money = (int**)malloc(n * sizeof(int*));
for (int i = 0; i < n; i++) {
money[i] = (int*)malloc(n * sizeof(int));
}
memset(money, 254, sizeof(money));
for (int i = m; i > 0; i--) {//输入所有数据
int x, y, w;
scanf("%d 空格 %d 空格%d", &x,&y,&w);
money[x - 1][y - 1] = w;//此处发生异常
money[y - 1][x - 1] = w;
}
因为数据量过大,使用了动态分配空间,但是在数据写入的时候一直出现数据写入异常访问。
实在是看不出来哪里出现问题了,谢谢您的帮助。
C语言动态分配二维数组后数据写入异常
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
5条回答 默认 最新
技术专家团-小桥流水 2022-04-12 10:30关注再scanf下面,最好判断一下输入的x和y是否再1-n之间,另外,memset是给以字符大小赋值的,你的memset可能达不到你想要的效果。
代码修改如下://动态分配空间 int** money = (int**)malloc(n * sizeof(int*)); for (int i = 0; i < n; i++) { money[i] = (int*)malloc(n * sizeof(int)); } memset(money, 254, sizeof(money)); for (int i = m; i > 0; i--) {//输入所有数据 int x, y, w; scanf("%d %d %d", &x, &y, &w); if (x >= 1 && y <= n && y >= 1 && y <= n) { money[x - 1][y - 1] = w;//此处发生异常 money[y - 1][x - 1] = w; } }本回答被专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录