关于c ++:你是否施放了malloc的结果?

Do you cast the result of malloc?

本问题已经有最佳答案,请猛点这里访问。

在这个问题上,有人在评论中建议,我不应该将malloc的结果进行投射,即:

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

而不是:

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

为什么会这样?

编辑标记为重复,因为我没有足够的研究。


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

在C++中,你不能隐式地从EDCOX1的0度到任何其他指针类型,所以需要强制转换。也就是说,在C++中,几乎可以肯定地使用EDCOX1、3和EDCOX1,4,而不是EDCOX1,1,因为它们更安全,与构造函数和析构函数一起玩得很好。

希望这有帮助!