【发布时间】:2017-08-21 15:47:00
【问题描述】:
此代码在 MSVC 编译器和 gcc (MinGW) 上均无法编译。
#include <stdlib.h>
int main() {
int *a = malloc(sizeof(int));
free(a);
return 0;
}
编译错误是
错误 C2440 'initializing':无法从 'void *' 转换为 'int *'
当然,把分配线改成
int *a = (int*) malloc(sizeof(int));
使编译成为可能。 为什么需要显式类型转换?当我分配其他类型的数据(如 struct 或 )时,这种方法没有问题。
【问题讨论】: