我正在进行一个项目,我正在尝试使用malloc()
and realloc()
。我知道当我 malloc 时,它可以工作,但是当我使用 realloc 时,它根本不会改变分配的内存量。我一直认为 realloc 会重新分配你已经分配的内存。
这是我所拥有的:
这包括:
#include <stdlib.h>
我有一个结构:
struct student {
int age;
int numOfClasses;
int gender; //0 male; 1 female
} student;
当我想使用 malloc 制作其中的 7 个结构时,我将使用这行代码:
student stud* = (structure*) malloc(7*sizeof(student));
这条线有效。那行代码将结构的大小乘以 7。简而言之,这将占用足够的内存来创建一个由 7 个结构组成的数组。
现在,如果我想将其更改为 8,我会A
在以前的 malloced 内存和B
新 malloced(或重新分配)内存的位置执行此操作:
这是我在代码中的方式:
stud = (student*)realloc(stud, 8*sizeof(student));
据我所知, realloc 采用第二个参数中的变量并分配该内存量。然后,它获取指针(或先前分配的),并从给定的指针中尽可能多地填充刚刚分配的内存。当然,第二个参数必须比之前的 malloced size 大,否则stud
最后会丢失一些内存。现在这就是我的问题所在。当我调用上面的行时,它不会改变任何东西。malloced 数组的长度仍然为 7。我也很确定我有足够的内存来重新分配。
我这样做对吗?我的问题可能出在哪里?