计算 malloc() 和 realloc() 大小的正确方法?

标签 c malloc realloc

我见过 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 分配。

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

相关文章:

c++ - (x < 0) 或 (x == -1) 哪个更快?

xcode - 麦 cocoa : Can't release a window to get back its memory

c - 如何正确分配结构体和某些变量?

c++ - 重新分配新分配的内存是否安全?

c - 如果我使用 "invalid free or delete",为什么 Valgrind 会生成 "realloc()"?

c++ - 无法从匿名管道读取

c - 是否为定义明确的同一文件描述符创建两个文件?

c - switch case 与失败的 case 中的执行 case 不一样

arrays - 函数中 str[strlen(src)+1] 和 char *str=(char*)malloc((strlen(src)+1)*sizeof(char)) 的区别

C : Increase Dynamic Array by one in a loop