C和C ++之间有一个微妙的区别

时间:2011-04-07 01:19:00

标签: c

以下C语句在C ++中无效。

int *a = malloc(sizeof(*a));

为什么呢?你是如何解决的?

答案是:

  

C执行隐式转换   void *,而C ++则没有。用一个   明确的演员来解决这个问题。

我的问题是:明确投射到谁和哪里? 感谢。

1 个答案:

答案 0 :(得分:5)

在C ++中你必须说

int *a = (int*)malloc(sizeof(*a));

因为编译器不会隐式地将void*转换为int*

更好的是,只需使用newdelete

int *a = new int();