我找到了一个计算合并排序执行时间的代码。我收到的错误是"无法将void转换为int" 。我从这段代码x = malloc(n * sizeof (int));
x = malloc(n * sizeof (int));
答案 0 :(得分:2)
由于这个问题用C ++标记,我推荐一个完全不同的解决方案:拥抱C ++的强大功能并使用std::vector
。
std::vector<int> descriptiveNameHere(n);
此方法使您无需手动管理内存分配。当vector
被允许超出范围时,存储将自动被释放。
答案 1 :(得分:1)
C ++编译器比C编译器更严格。因此,并非所有C代码都将使用C ++编译器进行编译,因此如果您不使用任何C ++函数,则不应使用C ++编译器。
malloc
返回void *
,因此您必须将其强制转换为相应的类型,前提是您使用的是C编译器:
Type * x = (Type *) malloc (sizeof(Type));
但是如果你必须使用C ++和malloc,那么就像评论中提到的那样,C风格的演员应该是最后的选择,你应该使用static_cast
Type * x = static_cast<Type *>(malloc(sizeof(Type)));
答案 2 :(得分:0)
你应该像这样投射malloc。
x = (int *)malloc(sizeof(int) * n)
因为malloc只返回void指针