在释放内存之前转换为void *(C编程)[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在释放内存之前转换为void *(C编程)[重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我遇到了这段代码,并想知道为什么在释放之前它已被转换为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中是胡说八道。
可能是他们正在编译C ++编译器中的代码,在这种情况下需要强制转换。但是用C ++编译器编译C代码通常不是一个好主意。
以上是关于在释放内存之前转换为void *(C编程)[重复]的主要内容,如果未能解决你的问题,请参考以下文章