我想乘以矩阵。我通过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*));
}
输出:
"i"为空!
错误:
MPI_C.exe中0x00007FF6003C35BB未处理的异常:0xC0000005:访问冲突写入位置0xFFFFFFFFABA57A00。
将
非指针与NULL
进行比较是没有意义的。NULL
宏扩展为整数常量0
,可能转换为(void *)
。
在前一种情况下,您的代码只检查 if (i == 0)
,这在循环的第一次迭代中是正确的。在后一种情况下,您正在执行if (i == ((void *)0))
,您的编译器应该抱怨,因为它是类型错误。
仅对指针值使用NULL
,而不对数字使用。