好的,我知道在分配内存时应该检查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
行分配来简化该过程。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句