﻿<?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++博客-阅读＋实践＝成长-随笔分类-C4ever</title><link>http://www.cppblog.com/wform/category/3020.html</link><description>关闭中ing</description><language>zh-cn</language><lastBuildDate>Fri, 23 May 2008 10:52:53 GMT</lastBuildDate><pubDate>Fri, 23 May 2008 10:52:53 GMT</pubDate><ttl>60</ttl><item><title>sizeof</title><link>http://www.cppblog.com/wform/archive/2006/11/14/15146.html</link><dc:creator>夜舞重金属</dc:creator><author>夜舞重金属</author><pubDate>Tue, 14 Nov 2006 03:42:00 GMT</pubDate><guid>http://www.cppblog.com/wform/archive/2006/11/14/15146.html</guid><wfw:comment>http://www.cppblog.com/wform/comments/15146.html</wfw:comment><comments>http://www.cppblog.com/wform/archive/2006/11/14/15146.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wform/comments/commentRss/15146.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wform/services/trackbacks/15146.html</trackback:ping><description><![CDATA[<p>题记：<br />sizeof本来以前是小菜，发现原来也有蛮多陷阱的，这里做个记录。<br /><br />1. sizeof 类<br />sizeof 类和结构其实差不多，都要注意对齐的问题。并且，sizeof 空类 = 1。<br />sizeof 类要注意的是：<br />1) 没有虚函数：sizeof(数据成员)的和<br />2) 有虚函数：sizeof(数据成员)的和+sizeof(V表指针)=4<br /><br />例如：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img id="Codehighlighter1_7_23_Open_Image" onclick="this.style.display='none'; Codehighlighter1_7_23_Open_Text.style.display='none'; Codehighlighter1_7_23_Closed_Image.style.display='inline'; Codehighlighter1_7_23_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_7_23_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_7_23_Closed_Text.style.display='none'; Codehighlighter1_7_23_Open_Image.style.display='inline'; Codehighlighter1_7_23_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> A</span>
				<span id="Codehighlighter1_7_23_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.cppblog.com/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_7_23_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">double</span>
						<span style="COLOR: #000000"> a;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_46_63_Open_Image" onclick="this.style.display='none'; Codehighlighter1_46_63_Open_Text.style.display='none'; Codehighlighter1_46_63_Closed_Image.style.display='inline'; Codehighlighter1_46_63_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_46_63_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_46_63_Closed_Text.style.display='none'; Codehighlighter1_46_63_Open_Image.style.display='inline'; Codehighlighter1_46_63_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> A1: </span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> A </span>
				<span id="Codehighlighter1_46_63_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.cppblog.com/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_46_63_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> pop();<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_86_111_Open_Image" onclick="this.style.display='none'; Codehighlighter1_86_111_Open_Text.style.display='none'; Codehighlighter1_86_111_Closed_Image.style.display='inline'; Codehighlighter1_86_111_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_86_111_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_86_111_Closed_Text.style.display='none'; Codehighlighter1_86_111_Open_Image.style.display='inline'; Codehighlighter1_86_111_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> A2: </span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> A </span>
				<span id="Codehighlighter1_86_111_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.cppblog.com/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_86_111_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">virtual</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> pop();<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> main(</span>
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000">)<br /><img id="Codehighlighter1_130_220_Open_Image" onclick="this.style.display='none'; Codehighlighter1_130_220_Open_Text.style.display='none'; Codehighlighter1_130_220_Closed_Image.style.display='inline'; Codehighlighter1_130_220_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_130_220_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_130_220_Closed_Text.style.display='none'; Codehighlighter1_130_220_Open_Image.style.display='inline'; Codehighlighter1_130_220_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_130_220_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.cppblog.com/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_130_220_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    cout </span>
						<span style="COLOR: #000000">&lt;&lt;</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">sizeof</span>
						<span style="COLOR: #000000">(A) </span>
						<span style="COLOR: #000000">&lt;&lt;</span>
						<span style="COLOR: #000000"> endl </span>
						<span style="COLOR: #000000">&lt;&lt;</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">sizeof</span>
						<span style="COLOR: #000000"> A1 </span>
						<span style="COLOR: #000000">&lt;&lt;</span>
						<span style="COLOR: #000000"> endl </span>
						<span style="COLOR: #000000">&lt;&lt;</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">sizeof</span>
						<span style="COLOR: #000000"> A2 </span>
						<span style="COLOR: #000000">&lt;&lt;</span>
						<span style="COLOR: #000000"> endl;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">return</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
		</div>
		<br />结果是 8 8 16 <br />说明：之所以sizeof A2是16，是因为对齐的问题；如果类A的数据成员是int a，则结果是8。<img src ="http://www.cppblog.com/wform/aggbug/15146.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wform/" target="_blank">夜舞重金属</a> 2006-11-14 11:42 <a href="http://www.cppblog.com/wform/archive/2006/11/14/15146.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>