在这个问题中,有人在评论中建议我不应该投出结果malloc,即:
int *sieve = malloc(sizeof(int)*length);
Run Code Online (Sandbox Code Playgroud)
而不是:
int *sieve = (int *)malloc(sizeof(int)*length);
Run Code Online (Sandbox Code Playgroud)
为什么会这样呢?
编辑
标记为重复原因我没有足够的研究.
在C中,您可以隐式地从void*(返回类型malloc)转换为任何其他指针类型.因此,不需要演员阵容,并且抛弃演员表被认为是好的C风格.
在C++中,您不能隐式地从a转换void*为任何其他指针类型,因此需要强制转换.这就是说,在C++中,你应该几乎肯定会使用new和delete,而不是malloc,因为他们更类型安全的,具有构造函数和析构函数等发挥出色
希望这可以帮助!