c - 我应该在 C 中二维数组的 malloc 和 calloc 之后检查 NULL 指针吗?
问题描述
好的,我承认我应该在 malloc 时检查 NULL 指针,但是 calloc 呢?是否存在内存泄漏?
int **initializeMatrix(int *rows, int *cols) {
int **matrix = malloc((*rows) * sizeof(int*));
checkNullPointer(matrix);
for(int i = 0; i < *rows; i++) {
matrix[i] = calloc(*cols, sizeof(int));
}
return matrix;
}
void checkNullPointer(int **ptr) {
if (ptr == NULL)
printErrorMessage(memoryErrorMessage, 101);
}
解决方案
您确实需要检查calloc
(NULL
如果无法分配内存)的返回值,但请注意,调用free
指针NULL
是无操作的,因此本身不会立即发生内存泄漏。
当然,在遇到NULL
返回后进行清理时,您需要调用成功调用产生的free
所有非指针。就我个人而言,我也会呼吁行分配以使该过程更简单。NULL
calloc
calloc
推荐阅读
- json - 如何在颤动的谷歌地图中显示旅行时间?
- algorithm - 算法难题:子树中的不同节点
- python - 'JSONDecodeError: Expecting value' 向机器人添加调平系统时出错
- python - 使用模糊python删除重复的近似词匹配
- regex - 如何使用正则表达式匹配波浪号分隔的数据
- python - 即使屏幕刮板的路径正确,列表也会返回空
- docker - 在 kubernetes 中运行时是否需要在 Dockerfile 中指定 UID
- c# - Excel求解器真的知道目标公式吗?
- c# - C# 没有给出与所需参数相对应的参数
- swift - 类型“X”没有“Y”的成员