我有一个正在使用的结构,并且我编写了一个方法来创建和初始化它。当我为结构分配内存时,该方法会引发损坏的顶部大小错误。这是该结构的代码:
typedef struct Job {
int id;
int cpuBurst;
int ioBurst;
int repetitions;
int priority;
int startTime;
int endTime;
int waitTime;
}Job;
以及方法:
Job * createJob(int id, int cpuBurst, int ioBurst, int repetitions, int priority) {
Job *job = (Job *) malloc(sizeof(Job));
job->id = id;
job->cpuBurst = cpuBurst;
job->ioBurst = ioBurst;
job->repetitions = repetitions;
job->priority = priority;
job->startTime = -1;
job->endTime = -1;
job->waitTime = 0;
return job;
}
Job *job = (Job *) malloc(sizeof(Job));
抛出错误。
我四处寻找类似的问题,但我能找到的所有问题都与缓冲区溢出有关,我不认为这是我的问题,因为我没有使用缓冲区。
该错误(损坏的顶部大小)是在您进行 malloc
调用之前,如果某些内容已经
已经损坏了堆,则会出现这种错误。
您可能需要查看 other 代码才能找出原因。
顺便说一句,你不应该在 C 中显式转换
malloc
的返回值,这是没有必要的,而且它可能会隐藏某些微妙的错误。
在尝试使用它之前,您应该一定将返回值与
NULL
进行比较。