我使用Code :: Blocks在C语言编程,我的程序编译正确但在执行时崩溃,给出了非常有名的"进程返回-1073741819(0xC0000005)"。
我在evrywhere搜索过,在我看来,我的问题与我在其他地方找到的问题不同(只是为了让你知道我已经尝试了很长时间寻找答案来到这里之前)。
我在代码中多次使用 calloc ,但它似乎不是问题:在尝试找到问题的根源后,似乎我的程序错误"返回0;"在最后!
当我尝试免费我动态分配的所有内容(我首先没做过的事情)时,程序现在崩溃了。
你对这个问题的根源有什么直觉吗?
我的程序长达500行,现在非常混乱,所以我现在不把它放在那里,但如果你愿意,我可以! 我是C的初学者,所以有可能我完全错过了一些东西,谢谢你没有和我一起苛刻=)
///编辑:找到解决方案///
好吧,我想我明白了为什么我的代码崩溃了(尽管我不知道为什么它在程序中这么晚才崩溃,我认为应该早一点......)。
构造动态分配的数组是一个问题。
对于那些感兴趣的人,你必须得到程序的结构来解决问题(考虑到它没有结束并且没有足够的评论可读,这是非常丑陋的......)有两个大的循环在我的程序中(126-> 180和283-> 388);一个用于获取我动态分配的几个数组的大小,第二个用于填充它们。这些循环应该几乎相同。但是我忘记了第一个循环中的一半...所以大小不正确(太小)而且我填充了正确的整数...
现在它运作正常。感谢您帮助了我,我问自己好的问题,感谢你=)(虽然我仍然不知道为什么错误在最后......)
答案 0 :(得分:3)
0xC0000005
是Memory Access Violation
的错误代码。换句话说,当你试图访问一个解除引用的内存区域或者你试图解除两次相同的对象时,通常会发生SEGFAULT
。
幸运的是,当您可以精确查明哪条指令导致内存访问冲突时,Code :: Blocks附带了调试器。