C++builder编写的程序出错

luohuayouy 2013-08-08 11:04:57
我用C++builder 2010编写的一个程序在运行一段时间后就会提示错误:access violation at address 76E859C7 in module 'ntdll.dll'.Read of address 36653963。我在网上找了很多资料都是说内存非访问,但是我找了很久也不知道是在哪里出错了。求问各位大神有没有比较好的办法去准确的找到出错的地方呢?或者是告诉我大概是哪里出错了。
...全文
200 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
nextseconds 2013-08-11
  • 打赏
  • 举报
回复
代码都没放出来,单凭这个错误,只能看出来是非法访问内存
勉励前行 2013-08-09
  • 打赏
  • 举报
回复
AV错误一般较难定位出错地方的,特别是越界溢出等AV错误。 1、打开编译器警告,处理警告:使用未初始化的指针。 2、共用的类,检查构造函数,保障每个变量都已经初始化。 3、数组或内存越界检查。用codeguard 或 eureKaLog等检查,如果内存越界,则会有提示。 4、所有强制指针转换的地方,需要仔细确认。 5、同一内存块内的变量越界,无法检出,需要调试。 表现的现象是访问了一个野指针(Read of address 36653963) , 但造成这个现象的原因,可能是因为 1、越界写, 2、指针未初始化, 3、使用已经delete了的内存, 4、错误的指针强制转换, 5、使用不同的内存管理器来分配及释放内存,如DLL中new,exe中delete,new 构造 free释放。即申请内存与释放内存的函数要配对,不能混用。 C++: new-delete malloc-realloc-free new[]--delete[] VCL: GetMemory-ReallocMemory-FreeMemory SysGetMem-SysFreeMem WINAPI: VirtualAlloc-VirtualFree 如果不匹配,则可能造成内存错误。不能释放内存就用delete,那是不负责任,需要看出处,如果是DLL中分配的内存,则调用DLL中的函数去释放。这也是BPL包比DLL方便易用的原因,使用同样的内存管理器,不需要回到指定BPL中delete. 内存错误难处理,因为太复杂了。总共上万行不算多,一个pas文件几W行也常见,就怕一个函数上W行。
luohuayouy 2013-08-09
  • 打赏
  • 举报
回复
引用 7 楼 silverpot 的回复:
十之八九是访问了一个野指针。贴出你的代码吧
代码差不多上万行哦!有没有什么办法可以快速定位到出错的地方啊?
银点 2013-08-09
  • 打赏
  • 举报
回复
十之八九是访问了一个野指针。贴出你的代码吧
luohuayouy 2013-08-09
  • 打赏
  • 举报
回复
引用 4 楼 ksrsoft 的回复:
可以记录,有日志,报错提示都不一样,你先研究一下吧
你好,我现在用eureKaLog软件检测到出错的地方提示在Controls.pas这个文件中的Result := windowHandle <> 0 ;这行代码。按理说这是系统自己生成的,为什么会提示是在这里出错呢?你以前遇到过类似的问题吗?
缘中人 2013-08-08
  • 打赏
  • 举报
回复
可以记录,有日志,报错提示都不一样,你先研究一下吧
luohuayouy 2013-08-08
  • 打赏
  • 举报
回复
引用 1 楼 ksrsoft 的回复:
不好查呀不好查。内存泄漏、非法访问都是不好查的 建议安装eureKaLog软件,报错了会提示具体错误代码行,希望对你有
我是放到其他机子上运行才出现的错误,你推荐的这个软件能记录得下来吗?
缘中人 2013-08-08
  • 打赏
  • 举报
回复
启发。。。。
缘中人 2013-08-08
  • 打赏
  • 举报
回复
不好查呀不好查。内存泄漏、非法访问都是不好查的 建议安装eureKaLog软件,报错了会提示具体错误代码行,希望对你有
luohuayouy 2013-08-08
  • 打赏
  • 举报
回复
引用 4 楼 ksrsoft 的回复:
可以记录,有日志,报错提示都不一样,你先研究一下吧
好的!谢谢

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧