你是否施放了malloc的结果?

时间:2014-01-22 19:04:45

标签: c++ malloc

this question中,有人在评论中建议我不应该投出malloc的结果:

int *sieve = malloc(sizeof(int)*length);

而不是:

int *sieve = (int *)malloc(sizeof(int)*length);

为什么会出现这种情况?

修改
标记为重复原因我没有足够的研究。

1 个答案:

答案 0 :(得分:9)

在C中,您可以隐式地将void*malloc的返回类型)转换为任何其他指针类型。因此,不需要演员表,并且离开演员表被认为是好的C风格。

在C ++中,无法隐式地从void*转换为任何其他指针类型,因此需要强制转换。也就是说,在C ++中,您几乎肯定会使用newdelete而不是malloc,因为它们更安全,可以与构造函数和析构函数等一起使用。 / p>

希望这有帮助!