在this question中,有人在评论中建议我不应该投出malloc
,即的结果:
int *sieve = malloc(sizeof(int)*length);
而不是:
int *sieve = (int *)malloc(sizeof(int)*length);
为什么会出现这种情况?
修改
标记为重复原因我没有足够的研究。
答案 0 :(得分:9)
在C中,您可以隐式地将void*
(malloc
的返回类型)转换为任何其他指针类型。因此,不需要演员表,并且离开演员表被认为是好的C风格。
在C ++中,无法隐式地从void*
转换为任何其他指针类型,因此需要强制转换。也就是说,在C ++中,您几乎肯定会使用new
和delete
而不是malloc
,因为它们更安全,可以与构造函数和析构函数等一起使用。 / p>
希望这有帮助!