C访问冲突错误,但不在 Debug模式下

标签 c debugging

<分区>

我有这个代码:

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)。问题是它在 Debug模式下工作得很好,所以我不知道问题出在哪里。特别是它适用于前 2 次迭代,这是不一致的,我真的不明白。

谢谢。

最佳答案

您没有分配正确的大小:

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

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

关于C访问冲突错误,但不在 Debug模式下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53012000/

相关文章:

ios - 单击同一集合单元格中的按钮时如何获取集合单元格中的标签

C:Windows 与 Linux 中的 strtok 和换行符

ios - 我的应用程序在 Debug模式下完美运行,但在 ad hoc 模式下却不行

javascript - 双socketIO事件错误

java - 如何在Eclipse中快速查找/切换到调试当前指令指针

c - *** 检测到 glibc *** : free(): invalid next size (fast) in C code

python - 将 word2vec bin 文件转换为文本

子进程在使用父进程将数据写入管道之前读取数据

c - 数组 C 中数字的总和和平均值

ios - "self"在 iOS 5.1 上的调试器中不可用