MacOS下C语言动态二维数组赋值触发EXC_BAD_ACCESS错误的问题求助
MacOS下C语言动态二维数组赋值触发EXC_BAD_ACCESS错误的问题求助
大家好,我是MacOS用户,最近写C语言代码时碰到了一个问题:我想给动态分配的二维数组所有元素赋值为0,但编译运行后触发了错误:
Exception has occurred. EXC_BAD_ACCESS (code=1, address=0x0)
错误直接指向arr[i][j] = 0;这一行语句。
以下是我的完整代码:
#include <stdlib.h> #include <stdio.h> #define SIZE 8 /* assigns 0 to all elements of 2d array */ void clearArr(int **arr, int rows, int columns) { for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { arr[i][j] = 0; } } } int main(void) { int **arr = (int**)malloc(sizeof(int) * (size_t)SIZE); for (int i = 0; i < SIZE; i++) { arr[i] = (int*)malloc(sizeof(int) * (size_t)SIZE); } clearArr(arr, SIZE, SIZE); for (int i = 0; i < SIZE; i++) { free(arr[i]); } free(arr); return 0; }
我还尝试把出错的语句替换成((arr + i) + j) = 0;,但问题依然没有解决,想请教各位大佬这到底是哪里出了问题,该怎么修复?
备注:内容来源于stack exchange,提问作者somewhatshrimp
相关产品推荐
相关产品推荐

