尝试读取或写入受保护的内存。这通常指示其他内存已损坏

博客讲述了在C#应用中调用C++动态链接库(DLL)时遇到的‘尝试读取或写入受保护的内存’错误。问题出现在C#带界面的应用中,但控制台程序则正常运行。作者通过逐步排除法发现,问题出在两个定时器同时运行时,禁用其中一个定时器后错误消失。解决方案是确保DLL调用与定时器执行的同步,避免并发问题导致的内存冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象:c#调用c++ dll时报错:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

排查:c#控制台调用不会出现问题,只有c#带界面出现;进入dll调试发现dll中读写数据报出的这个错误,而且读写数据的参数和c#传递的参数无关,那不是例程的问题?可是为什么其他程序调用就没有问题?

那干脆把c#其他功能全部关闭,就只调用这一个函数(定时器调用),发现就再也没出现这个问题,然后只关闭另一个定时器,还是没有问题。

解决:两个定时器不能同时打开,否则报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值