
在这个 问题 里,有人在
评论 里建议不要对malloc返回的值进行转换。举个例子,
应该这样,
int *sieve = malloc(sizeof(int) * length);而不是,
int *sieve = (int *) malloc(sizeof(int) * length);谁能说下为什么?
(double*)malloc(sizeof(double))改成(int*)malloc(sizeof(int)),如果改漏了,那么你的程序就存在 bug。注意,以上都是以 C 语言为基础上成立的,在 C++ 中则是不一样,C++ 是不允许 void* 隐式转换为其它类型的,所以需要显示转换,一般用 static_cast。