我已经看到malloc()和realloc()使用了许多不同的方式。在测试了各种方法之后,我很好奇我是否正确使用了它们?

首先我尝试

int size = rowSize * colSize;
int newSize = size + rowSize;

int *randomNum;

randomNum = malloc(size * sizeof *randomNum);

randomNum = realloc(randomNum, newSize * sizeof *randomNum);

而且有效!!

然后我尝试了
int size = rowSize * colSize;
int newSize = size + rowSize;

int *randomNum;

randomNum = malloc(size * sizeof(int));

randomNum = realloc(randomNum, newSize * sizeof(int));

而且也可以。所以我想我不知道为什么要使用“sizeof * some_name”和“sizeof(int)”?是否有理由使用一个?

最佳答案

他们是一样的。使用先前示例的原因是,如果您决定更改类型,则以后可以简化维护。

就是说,不要那样使用realloc-如果失败,您将泄漏原始的randomNum分配。

关于c - 计算malloc()和realloc()大小的正确方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23052440/

10-11 18:22