因内存释放而引发的中断问题,dll中new的内存释放问题

调试程序,每次关闭一个界面就会弹出中断错误。

为了确认这个问题,我将出现问题那一段代码中的函数一个个屏蔽,以此来确认到底哪个函数出现问题,缩小范围:

最后我发现,只要屏蔽掉checkIfFingerInfoSynchronized这个函数,就不会出现这个问题。

这个函数中,用到了dll中一个函数:int getFingerInfo(P_USER_INFO* pUserFingerInfo, int * num)

其中有申请堆内存的操作

但释放内存操作是在主程序,而非dll

这是因为, dll里面申请的内存与主程序内存存放地方不一致,

所以dll里面new的内存, exe里面delete是要AV的.

先屏蔽掉该释放内存操作

就不会在AV了

但dll里new的内存该如何delete呢?

就像这篇文章说的那样,dll里再export个delete内存的函数,主程序调用即可

https://blog.csdn.net/rocklee/article/details/73478110

原文地址:https://www.cnblogs.com/rixiang/p/9753424.html