﻿<?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++博客-从简单到混乱-最新评论</title><link>http://www.cppblog.com/psysun/CommentsRSS.aspx</link><description /><language>zh-cn</language><pubDate>Thu, 24 Nov 2005 02:24:06 GMT</pubDate><lastBuildDate>Thu, 24 Nov 2005 02:24:06 GMT</lastBuildDate><generator>cnblogs</generator><item><title>re: 在跨模块调用中传递stl容器的问题。</title><link>http://www.cppblog.com/psysun/archive/2005/12/11/1277.html#1688</link><dc:creator>psysun</dc:creator><author>psysun</author><pubDate>Sun, 11 Dec 2005 15:30:00 GMT</pubDate><guid>http://www.cppblog.com/psysun/archive/2005/12/11/1277.html#1688</guid><description><![CDATA[再连接时用动态方式链接运行库就能避免了。vc里就是/MD<img src ="http://www.cppblog.com/psysun/aggbug/1688.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/psysun/" target="_blank">psysun</a> 2005-12-11 23:30 <a href="http://www.cppblog.com/psysun/archive/2005/12/11/1277.html#1688#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: 在跨模块调用中传递stl容器的问题。</title><link>http://www.cppblog.com/psysun/archive/2005/11/29/1277.html#1412</link><dc:creator>hotjock</dc:creator><author>hotjock</author><pubDate>Tue, 29 Nov 2005 09:21:00 GMT</pubDate><guid>http://www.cppblog.com/psysun/archive/2005/11/29/1277.html#1412</guid><description><![CDATA[如同你最初给出的那个例子，怎样做就可以保证不出异常。<br><br>一个新手，希望讲的详细些。<img src ="http://www.cppblog.com/psysun/aggbug/1412.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/psysun/" target="_blank">hotjock</a> 2005-11-29 17:21 <a href="http://www.cppblog.com/psysun/archive/2005/11/29/1277.html#1412#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: 在跨模块调用中传递stl容器的问题。</title><link>http://www.cppblog.com/psysun/archive/2005/11/28/1277.html#1371</link><dc:creator>psysun</dc:creator><author>psysun</author><pubDate>Mon, 28 Nov 2005 11:23:00 GMT</pubDate><guid>http://www.cppblog.com/psysun/archive/2005/11/28/1277.html#1371</guid><description><![CDATA[和动态链接没关系，重要的是共享运行时库。<br>因为stl容器都是以头文件形式定义的，所以每个模块编译后都至少有一份stl代码，在上面的例子里operator+=就是在dll.obj模块里，而~string()代码在de.obj，他们都使用了allocator&lt;&gt;，这个模版最后会用malloc和free管理内存，这时如果有一个模块静态链接了运行库，那么堆就不是唯一的，就会出异常了。<br>stl容器在分配内存时会根据算法用malloc分配一个比需要更大的内存，free掉原来的内存，用new(p) value_type(x)构造新对象，调用的是拷贝构造函数，用p-&gt;~value_type()析构对象。<img src ="http://www.cppblog.com/psysun/aggbug/1371.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/psysun/" target="_blank">psysun</a> 2005-11-28 19:23 <a href="http://www.cppblog.com/psysun/archive/2005/11/28/1277.html#1371#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: 在跨模块调用中传递stl容器的问题。</title><link>http://www.cppblog.com/psysun/archive/2005/11/28/1277.html#1364</link><dc:creator>hotjock</dc:creator><author>hotjock</author><pubDate>Mon, 28 Nov 2005 05:52:00 GMT</pubDate><guid>http://www.cppblog.com/psysun/archive/2005/11/28/1277.html#1364</guid><description><![CDATA[是不是用动态方式链接就能保证调用模块和被调用模块公用一个堆？还有就是STL如何释放或者讲何时释放由被调用模块重新new出来的空间（就象上面例子中的那样），采用动态链接就一定可以避免吗？<img src ="http://www.cppblog.com/psysun/aggbug/1364.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/psysun/" target="_blank">hotjock</a> 2005-11-28 13:52 <a href="http://www.cppblog.com/psysun/archive/2005/11/28/1277.html#1364#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: 在跨模块调用中传递stl容器的问题。</title><link>http://www.cppblog.com/psysun/archive/2005/11/24/1277.html#1293</link><dc:creator>psysun</dc:creator><author>psysun</author><pubDate>Thu, 24 Nov 2005 09:39:00 GMT</pubDate><guid>http://www.cppblog.com/psysun/archive/2005/11/24/1277.html#1293</guid><description><![CDATA[和多线程库没关系，是连接方式的问题。<br>总的原则是：在跨模块的接口里如果有用非常量stl容器引用作为参数的函数，那么就要保证这两个模块都用动态连接运行库方式连接的。用指针传递参数时分配和释放不再同一模块也有同样的问题。<img src ="http://www.cppblog.com/psysun/aggbug/1293.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/psysun/" target="_blank">psysun</a> 2005-11-24 17:39 <a href="http://www.cppblog.com/psysun/archive/2005/11/24/1277.html#1293#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: 在跨模块调用中传递stl容器的问题。</title><link>http://www.cppblog.com/psysun/archive/2005/11/24/1277.html#1287</link><dc:creator>小明</dc:creator><author>小明</author><pubDate>Thu, 24 Nov 2005 05:41:00 GMT</pubDate><guid>http://www.cppblog.com/psysun/archive/2005/11/24/1277.html#1287</guid><description><![CDATA[link 的时候使用C++ Multi Thread Dll 库，就应该没问题<img src ="http://www.cppblog.com/psysun/aggbug/1287.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/psysun/" target="_blank">小明</a> 2005-11-24 13:41 <a href="http://www.cppblog.com/psysun/archive/2005/11/24/1277.html#1287#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>