c - 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 次迭代,这是不一致的,我真的不明白。
谢谢你。
解决方案
您没有分配正确的大小:
MountedJob* new = malloc(sizeof(MountedJob));
否则,您只分配了一个指针,而不是整个结构。
推荐阅读
- flutter - 多少个 setState() 调用对于 Flutter 来说是多余的?
- c++ - 用于赋值的参数化构造函数
- elasticsearch - 弹性搜索快照和备份特定时间间隔的数据
- ssl - ssl 协商针对同一个域发生多次
- javascript - 与 selenium 相关的量角器不断连接到 localhost
- node.js - 有没有办法使用 Morgan-body 在 express.js 中创建自定义日志格式?
- python - Python 控制台立即从 Windows 命令提示符退出
- function - 在 Makefile 函数中设置变量值时遇到问题
- java - 如何引用我的数据库或指向该特定 UID?
- javascript - 如何使用 nodejs 将 base64 编码图像转换为 TIFF/png/jpeg