<分区>
我遇到了这段代码,想知道为什么它在释放之前被强制转换为 void *
?
free((void *)array1[i]);
我在一些文章中看到 free
没有强制转换,所以我想知道为什么释放内存时要强制转换为 void *
?
这是他们分配和释放内存的方式:
#include <stdlib.h>
int **array1 = malloc(nrows * sizeof(int *));
for(i = 0; i < nrows; i++)
array1[i] = malloc(ncolumns * sizeof(int));
for(i = 0; i < nrows; i++)
free((void *)array1[i]);
free((void *)array1);
引用this ,某些 gcc 版本可能会发出警告,但总体而言是不必要的。