【发布时间】:2018-02-28 13:45:04
【问题描述】:
我遇到了这段代码,想知道为什么在释放之前它被强制转换为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 版本可能会发出警告,但总的来说这是不必要的。
【问题讨论】:
-
可能是c++。
-
dave558,很好奇,在这种情况下,
array1[i]是什么类型?它的分配是否也使用了演员表?
标签: c casting free void-pointers