首页 > 解决方案 > C访问冲突错误,但不在调试模式下

问题描述

我有这个代码:

MountedJob* new_MountedJob(Job** job){
    MountedJob* new = malloc(sizeof(MountedJob*));
    printf("ok ");
    new->job = *job;
    printf("not ok");
    new->neededTools = new->job->toolSet;
    new->baseInstance = new->job->baseInstance;
    new->cj = new->baseInstance->C - hashset_size(new->neededTools);
    hashset_new(&new->unneededTools);
    return new;
}

它执行 10 次,每次作为参数传递的 Job。它们来自一个迭代列表,并以完全相同的方式生成。在第 3 次迭代中, new->job = *job;崩溃并出现访问冲突错误代码 (0xc0000005)。问题是它在调试模式下工作得很好,所以我不知道问题可能是什么。特别是它适用于第 2 次迭代,这是不一致的,我真的不明白。

谢谢你。

标签: cdebugging

解决方案


您没有分配正确的大小:

MountedJob* new = malloc(sizeof(MountedJob));

否则,您只分配了一个指针,而不是整个结构。


推荐阅读