STL中跨DLL指针调用导致断言_CrtIsValidHeapPointer验证失败

昨天遇到一问题,令我百思不得其解,问题大概是这样的:

函数封装都是写在外部dll中的,主程序部分只是一些简单的调用。
dll中有一个方法原型大概是这样的:bool Function(list<Type>& l)

在主程序中调用一切没有问题,得出的结果也是正确的,只是在主程序结束析构数据成员时出错。
查看Call Stack,确定是析构时出错,_CrtIsValidHeapPointer断言验证失败

 

起初把注意力都放在析构上了,走了死胡同,以为是模板类型Type引起的问题,导致内存读写错误。把list换成vector,把stack内存声明换为heap,都是同样的问题,写了个简单的Console App,怎么玩都不会出错。

 

把问题再次聚焦到断言_CrtIsValidHeapPointer,MSDN如下解释:

Verifies that a specified pointer is in the local heap (debug version only).

这里的关键是in the LOCAL heap,外部dll不在此列,当然就出错了 -_-~!!!

 

把Debug模式换为Release,一切OK。 

 

哎 !  白忙活一场

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值