如果我在c中使用malloc作为数组,我是否必须进行转换?

时间:2015-12-10 21:41:44

标签: c arrays dynamic-memory-allocation

一个简单的问题我无法找到问题:

double* array = (double*) malloc(ARRAY_SIZE * sizeof(double));

或者我可以简单地

double* array = malloc(ARRAY_SIZE * sizeof(double));

有什么不同吗?

1 个答案:

答案 0 :(得分:4)

在C中,你不应施放,因为它可以隐藏某些微妙的错误。在C ++中(因为你的问题最初有这个标签,尽管身体没有提及),你来演员。

我说的“细微错误”包括奇怪的行为,当你的整数和指针大小不同而你没有包含malloc的标题时 - 在这种情况下,你可能会发现它假设它返回一个int(在此过程中丢失信息),并且,虽然编译器通常会警告这一点,但显式转换可能会阻止这种情况。