堆已损坏的几种解决方案
近期翻旧项目代码的时候遇到c++异常,提示堆已损坏。如图
收集了几种解决方案如下:
- 没有自己管理内存的,考虑lib库与dll库不匹配,如opencv,在debug模式下lib是d.lib;dll是d.dll;而release模式下则均没有后缀d
- 若自己管理了内存,一般是内存越界抱的错,具体地:如果不是new出来的内存用尝试用delete删除会导致堆已损坏;已经free了的内存再次free会发生堆损坏错误
近期翻旧项目代码的时候遇到c++异常,提示堆已损坏。如图
收集了几种解决方案如下: