﻿<?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>BlogJava-一只牛的异想世界-随笔分类-C/C++</title><link>http://www.blogjava.net/andyelvis/category/39487.html</link><description>积水成流，聚沙成堆!</description><language>zh-cn</language><lastBuildDate>Sat, 16 May 2009 11:01:13 GMT</lastBuildDate><pubDate>Sat, 16 May 2009 11:01:13 GMT</pubDate><ttl>60</ttl><item><title>sizeof：对齐问题</title><link>http://www.blogjava.net/andyelvis/archive/2009/05/16/271014.html</link><dc:creator>蒋耘</dc:creator><author>蒋耘</author><pubDate>Sat, 16 May 2009 10:11:00 GMT</pubDate><guid>http://www.blogjava.net/andyelvis/archive/2009/05/16/271014.html</guid><wfw:comment>http://www.blogjava.net/andyelvis/comments/271014.html</wfw:comment><comments>http://www.blogjava.net/andyelvis/archive/2009/05/16/271014.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/andyelvis/comments/commentRss/271014.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/andyelvis/services/trackbacks/271014.html</trackback:ping><description><![CDATA[<span  style="font-family: 'Times New Roman'; line-height: 18px; "><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">因为对齐问题使结构体的</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">sizeof</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">变得比较复杂，看下面的例子：</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">(</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">默认对齐方式下</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">)</span></span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; "><br />
<br />
<span class="tpccontent1">struct s1</span><br />
<span class="tpccontent1">{</span><br />
<span class="tpccontent1">char a;</span><br />
<span class="tpccontent1">double b;</span><br />
<span class="tpccontent1">int c;</span><br />
<span class="tpccontent1">char d;&#160;</span><br />
<span class="tpccontent1">};</span><br />
<br />
<span class="tpccontent1">struct s2</span><br />
<span class="tpccontent1">{</span><br />
<span class="tpccontent1">char a;</span><br />
<span class="tpccontent1">char b;</span><br />
<span class="tpccontent1">int c;</span><br />
<span class="tpccontent1">double d;</span><br />
<span class="tpccontent1">};</span><br />
<br />
<span class="tpccontent1">cout&lt;&lt;sizeof(s1)&lt;&lt;endl; // 24</span><br />
<span class="tpccontent1">cout&lt;&lt;sizeof(s2)&lt;&lt;endl; // 16</span><br />
<br />
<span class="tpccontent1">&#160;&#160;</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">同样是两个</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">char</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">类型，一个</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">int</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">类型，一个</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">double</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">类型，但是因为对界问题，导致他们的大小不同。计算结构体大小可以采用元素摆放法，我举例子说明一下：首先，</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">CPU</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">判断结构体的对界，根据上一节的结论，</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">s1</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">和</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">s2</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">的对界都取最大的元素类型，也就是</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">double</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">类型的对界</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">8</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">。然后开始摆放每个元素。</span></span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; "><br />
<span class="tpccontent1">&#160;&#160;</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">对于</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">s1</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，首先把</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">a</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">放到</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">8</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">的对界，假定是</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">0</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，此时下一个空闲的地址是</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">1</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，但是下一个元素</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">d</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">是</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">double</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">类型，要放到</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">8</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">的对界上，离</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">1</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">最接近的地址是</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">8</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">了，所以</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">d</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">被放在了</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">8</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，此时下一个空闲地址变成了</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">16</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，下一个元素</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">c</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">的对界是</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">4</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">16</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">可以满足，所以</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">c</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">放在了</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">16</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，此时下一个空闲地址变成了</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">20</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，下一个元素</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">d</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">需要对界</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">1</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，也正好落在对界上，所以</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">d</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">放在了</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">20</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，结构体在地址</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">21</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">处结束。由于</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">s1</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">的大小需要是</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">8</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">的倍数，所以</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">21-23</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">的空间被保留，</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">s1</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">的大小变成了</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">24</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">。</span></span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; "><br />
<span class="tpccontent1">&#160;&#160;</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">对于</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">s2</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，首先把</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">a</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">放到</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">8</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">的对界，假定是</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">0</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，此时下一个空闲地址是</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">1</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，下一个元素的对界也是</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">1</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，所以</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">b</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">摆放在</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">1</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，下一个空闲地址变成了</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">2</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">；下一个元素</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">c</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">的对界是</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">4</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，所以取离</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">2</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">最近的地址</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">4</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">摆放</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">c</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，下一个空闲地址变成了</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">8</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，下一个元素</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">d</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">的对界是</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">8</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，所以</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">d</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">摆放在</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">8</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，所有元素摆放完毕，结构体在</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">15</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">处结束，占用总空间为</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">16</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，正好是</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">8</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">的倍数。</span></span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; "><br />
<br />
<span class="tpccontent1">&#160;&#160;</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">这里有个陷阱，对于结构体中的结构体成员，不要认为它的对齐方式就是他的大小，看下面的例子：</span></span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; "><br />
<br />
<span class="tpccontent1">struct s1</span><br />
<span class="tpccontent1">{</span><br />
<span class="tpccontent1">char a[8];</span><br />
<span class="tpccontent1">};</span><br />
<br />
<span class="tpccontent1">struct s2</span><br />
<span class="tpccontent1">{</span><br />
<span class="tpccontent1">double d;</span><br />
<span class="tpccontent1">};</span><br />
<br />
<span class="tpccontent1">struct s3</span><br />
<span class="tpccontent1">{</span><br />
<span class="tpccontent1">s1 s;</span><br />
<span class="tpccontent1">char a;</span><br />
<span class="tpccontent1">};</span><br />
<br />
<span class="tpccontent1">struct s4</span><br />
<span class="tpccontent1">{</span><br />
<span class="tpccontent1">s2 s;</span><br />
<span class="tpccontent1">char a;&#160;</span><br />
<span class="tpccontent1">};</span><br />
<br />
<span class="tpccontent1">cout&lt;&lt;sizeof(s1)&lt;&lt;endl; // 8</span><br />
<span class="tpccontent1">cout&lt;&lt;sizeof(s2)&lt;&lt;endl; // 8</span><br />
<span class="tpccontent1">cout&lt;&lt;sizeof(s3)&lt;&lt;endl; // 9</span><br />
<span class="tpccontent1">cout&lt;&lt;sizeof(s4)&lt;&lt;endl; // 16;</span><br />
<br />
<span class="tpccontent1">&#160; s1</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">和</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">s2</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">大小虽然都是</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">8</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，但是</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">s1</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">的对齐方式是</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">1</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">，</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">s2</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">是</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">8</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">（</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">double</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">），所以在</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">s3</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">和</span></span><span class="tpccontent1"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; ">s4</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">中才有这样的差异。</span></span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana; "><br />
<br />
<span class="tpccontent1">&#160;&#160;</span></span><span class="tpccontent1"><span style="font-size: 10pt; color: black; font-family: 宋体; ">所以，在自己定义结构体的时候，如果空间紧张的话，最好考虑对齐因素来排列结构体里的元素。</span></span></span>
<img src ="http://www.blogjava.net/andyelvis/aggbug/271014.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/andyelvis/" target="_blank">蒋耘</a> 2009-05-16 18:11 <a href="http://www.blogjava.net/andyelvis/archive/2009/05/16/271014.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于VC2008下提示找不到MSVCP90D.dll的解决办法</title><link>http://www.blogjava.net/andyelvis/archive/2009/05/15/270945.html</link><dc:creator>蒋耘</dc:creator><author>蒋耘</author><pubDate>Fri, 15 May 2009 14:21:00 GMT</pubDate><guid>http://www.blogjava.net/andyelvis/archive/2009/05/15/270945.html</guid><wfw:comment>http://www.blogjava.net/andyelvis/comments/270945.html</wfw:comment><comments>http://www.blogjava.net/andyelvis/archive/2009/05/15/270945.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/andyelvis/comments/commentRss/270945.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/andyelvis/services/trackbacks/270945.html</trackback:ping><description><![CDATA[<p align="left"><font size="2" face="Arial">Same problem MSCVP90D.dill not found,</font></p>
<p align="left"><font size="2" face="Arial">went to "Project | Game Properties | Configuration Properties | C/C++ | Code Generation | Runtime Library"</font></p>
<p><font size="2" face="Arial">and set Multi-threaded Debug (/MTd)</font></p>
<p align="left"><font size="2" face="Arial">did build generated error messages...</font></p>
<p align="left"><font size="2" face="Arial">then reset</font></p>
<p align="left"><font size="2" face="Arial">"Project | Game Properties | Configuration Properties | C/C++ | Code Generation | Runtime Library"</font></p>
<p align="left"><font size="2" face="Arial">to</font></p>
<p align="left"><font size="2" face="Arial">Multi-threaded Debug DLL (/MDd)</font></p>
<img src ="http://www.blogjava.net/andyelvis/aggbug/270945.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/andyelvis/" target="_blank">蒋耘</a> 2009-05-15 22:21 <a href="http://www.blogjava.net/andyelvis/archive/2009/05/15/270945.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++虚函数表解析(转) </title><link>http://www.blogjava.net/andyelvis/archive/2009/05/09/269778.html</link><dc:creator>蒋耘</dc:creator><author>蒋耘</author><pubDate>Sat, 09 May 2009 08:53:00 GMT</pubDate><guid>http://www.blogjava.net/andyelvis/archive/2009/05/09/269778.html</guid><wfw:comment>http://www.blogjava.net/andyelvis/comments/269778.html</wfw:comment><comments>http://www.blogjava.net/andyelvis/archive/2009/05/09/269778.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/andyelvis/comments/commentRss/269778.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/andyelvis/services/trackbacks/269778.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: C++中的虚函数的作用主要是实现了多态的机制。关于多态，简而言之就是用父类型别的指针指向其子类的实例，然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”，这是一种泛型技术。所谓泛型技术，说白了就是试图使用不变的代码来实现可变的算法。比如：模板技术，RTTI技术，虚函数技术，要么是试图做到在编译时决议，要么试图做到运行时决议。 <br><br>关于虚函数的使用方法，我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中，我只想从虚函数的实现机制上面为大家 一个清晰的剖析。 <br><br>当然，相同的文章在网上也出现过一些了，但我总感觉这些文章不是很容易阅读，大段大段的代码，没有图片，没有详细的说明，没有比较，没有举一反三。不利于学习和阅读，所以这是我想写下这篇文章的原因。也希望大家多给我提意见。 <br><br>言归正传，让我们一起进入虚函数的世界。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/andyelvis/archive/2009/05/09/269778.html'>阅读全文</a><img src ="http://www.blogjava.net/andyelvis/aggbug/269778.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/andyelvis/" target="_blank">蒋耘</a> 2009-05-09 16:53 <a href="http://www.blogjava.net/andyelvis/archive/2009/05/09/269778.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>