以下C语句在C ++中无效。
int *a = malloc(sizeof(*a));
为什么呢?你是如何解决的?
答案是:
C执行隐式转换 void *,而C ++则没有。用一个 明确的演员来解决这个问题。
我的问题是:明确投射到谁和哪里? 感谢。
答案 0 :(得分:5)
在C ++中你必须说
int *a = (int*)malloc(sizeof(*a));
因为编译器不会隐式地将void*
转换为int*
。
更好的是,只需使用new
和delete
:
int *a = new int();