我想要乘以矩阵。我通过malloc()
函数创建矩阵。索引(名为i
的变量)显示NULL
,而不是数字
int** matrix_a = (int**)malloc(lines * sizeof(int*));
for (int i = 0; i < lines; i++) {
if (i == NULL)
printf("'i' is NULL!");
matrix_a[i] = (int*)malloc(trans * sizeof(int*));
}
输出:
'我'是NULL!
错误:
MPI_C.exe中0x00007FF6003C35BB处的未处理异常:0xC0000005:访问冲突写入位置0xFFFFFFFFABA57A00。
答案 0 :(得分:1)
将非指针与NULL
进行比较是没有意义的。 NULL
宏扩展为整数常量0
,可能会转换为(void *)
。
在前一种情况下,您的代码只检查if (i == 0)
,这在循环的第一次迭代中是正确的。在后一种情况下,您正在执行if (i == ((void *)0))
,您的编译器应该抱怨它,因为它是类型错误。
仅将NULL
用于指针值,而不是数字。