﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-lzhnever</title><link>http://www.cppblog.com/lzhnever/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 09 Jun 2026 18:56:29 GMT</lastBuildDate><pubDate>Tue, 09 Jun 2026 18:56:29 GMT</pubDate><ttl>60</ttl><item><title>dll 中释放内存 exe中释放内存可以吗？</title><link>http://www.cppblog.com/lzhnever/archive/2011/02/16/140177.html</link><dc:creator>刘志恒</dc:creator><author>刘志恒</author><pubDate>Wed, 16 Feb 2011 10:58:00 GMT</pubDate><guid>http://www.cppblog.com/lzhnever/archive/2011/02/16/140177.html</guid><wfw:comment>http://www.cppblog.com/lzhnever/comments/140177.html</wfw:comment><comments>http://www.cppblog.com/lzhnever/archive/2011/02/16/140177.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lzhnever/comments/commentRss/140177.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lzhnever/services/trackbacks/140177.html</trackback:ping><description><![CDATA[<div class=msgfont>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 造成失败的原因是分配和释放内存不是由相同的堆管理程序完成的，例如动态链接库中的堆在默认情况下是由msvcrt.dll中的堆管理程序管理的 (以动态链接的方式)，而exe程序的堆在默认情况下是由程序自己的代码管理（以静态链接的方式），由于它们的堆管理程序不同，当动态链接库分配的内存在 exe程序中释放时就会出错，因为exe程序所在的堆并没有分配这块内存，而你却要求它释放这块内存。<br>解决方法：将程序中所有的模块都链接到C/C++运行期库Multithreaded DLL，修改后所有分配和释放堆上内存的操作都由同一个堆管理程序管理，这样便解决了问题。 </div>
<img src ="http://www.cppblog.com/lzhnever/aggbug/140177.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lzhnever/" target="_blank">刘志恒</a> 2011-02-16 18:58 <a href="http://www.cppblog.com/lzhnever/archive/2011/02/16/140177.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>