API内存访问错误

gxj760998 2009-11-26 11:40:22
最近调用了一个第三方的API,在长期使用过程中,发现有很低概率的出现内存访问错误.
导致系统崩溃,虽然能使用TRY结构捕捉到错误,但还是不能将系统恢复正常.
API的调用方式:
function avcodec_decode_video (avctx: PAVCodecContext; picture: PAVFrame;
got_picture_ptr: PInteger;
const buf: PByte; buf_size: int): int;
cdecl; external dll_name;

错误日志:avcodec_decode_video EAccessViolationAccess violation at address 00651C07 in module 'Monitor.exe'. Read of address 29B84B11

const buf: PByte; buf_size: int
这两个函数,是经常变化的.

目前的解决思路是尽量避免参数非法,防止出错.
希望能从根本上处理这样的错误,delphi下,不知道该如何处理,请指点一二.
谢谢@!
...全文
106 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wintergoes 2009-11-26
  • 打赏
  • 举报
回复
捕获异常后,重新初始化工作
gxj760998 2009-11-26
  • 打赏
  • 举报
回复
这参数也不太好检查,传的内存地址.
最麻烦的就是出了这样的异常后,程序处理不了会崩溃.
gyk120 2009-11-26
  • 打赏
  • 举报
回复
SEH都不行?那你只能检查参数了,第三方API是否是开源的?能不能从API上面下手
onyliu 2009-11-26
  • 打赏
  • 举报
回复
既然是第三方的估计想改是不可能了
概率低的话 就强制检查参数吧 ,参数不对就不执行 提示参数错误 回退
Seamour 2009-11-26
  • 打赏
  • 举报
回复
程序设计有问题别人还咋帮?
gxj760998 2009-11-26
  • 打赏
  • 举报
回复
我有多个线程要用这个API,要重新初始化,比较难啊!
明天揭贴.谢谢楼上各位了!

1,183

社区成员

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

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