﻿<?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++博客-The Way of C++ -随笔分类-C/C++</title><link>http://www.cppblog.com/koson/category/5828.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 23 Sep 2010 17:22:25 GMT</lastBuildDate><pubDate>Thu, 23 Sep 2010 17:22:25 GMT</pubDate><ttl>60</ttl><item><title>struct结构体的数据对齐</title><link>http://www.cppblog.com/koson/archive/2010/09/22/127341.html</link><dc:creator>koson</dc:creator><author>koson</author><pubDate>Wed, 22 Sep 2010 06:49:00 GMT</pubDate><guid>http://www.cppblog.com/koson/archive/2010/09/22/127341.html</guid><wfw:comment>http://www.cppblog.com/koson/comments/127341.html</wfw:comment><comments>http://www.cppblog.com/koson/archive/2010/09/22/127341.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/koson/comments/commentRss/127341.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/koson/services/trackbacks/127341.html</trackback:ping><description><![CDATA[<p>struct<br>{<br>&nbsp;&nbsp; char a;<br>&nbsp;&nbsp; int b;<br>&nbsp;&nbsp; short c;<br>};<br>每个成员起始地址必须为相应类型的大小的倍数，如a,起始地址为0，为sizeof(char)=1的倍数，而到b的时候，因为这时地址为1，不是sizeof(int)=4的倍数，所以编译器会添加3个字节大小，此时地址为4，作为b的起始地址，b占用4个字节，所以此时内存地址为8，8是sizeof(short)=2的倍数，所以c的起始地址为8，占两个字节，所以此时总的分配内存大小为10，但是因为整个结构体的最大成员为sizeof(int)=4,而10不为4的倍数，所以要添加两个字节为12.<br>使用#pragma pack(n)可以指定编译器按n个字节作为对齐方式，这个指定只对那些大于n个字节的成员有效，如上例，若指定了以2个字节作为对齐，则a的起始地址为0，接着到b,因为sizeof(int)=4 &lt; 2,所以要指定的对齐方式，此时地址为1，不为2的倍数，所以要加1，所以b的起始地址为2，占用4个字节大小之后地址为6，接着是c，因为6是2的倍数，所以6为c的起始地址，占用两个字节，总的大小为8</p>
<img src ="http://www.cppblog.com/koson/aggbug/127341.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/koson/" target="_blank">koson</a> 2010-09-22 14:49 <a href="http://www.cppblog.com/koson/archive/2010/09/22/127341.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>About the use of getline()</title><link>http://www.cppblog.com/koson/archive/2007/12/26/39702.html</link><dc:creator>koson</dc:creator><author>koson</author><pubDate>Wed, 26 Dec 2007 09:55:00 GMT</pubDate><guid>http://www.cppblog.com/koson/archive/2007/12/26/39702.html</guid><wfw:comment>http://www.cppblog.com/koson/comments/39702.html</wfw:comment><comments>http://www.cppblog.com/koson/archive/2007/12/26/39702.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/koson/comments/commentRss/39702.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/koson/services/trackbacks/39702.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: about the use of the getline(), and some solution to the problems when we use it. &nbsp;&nbsp;<a href='http://www.cppblog.com/koson/archive/2007/12/26/39702.html'>阅读全文</a><img src ="http://www.cppblog.com/koson/aggbug/39702.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/koson/" target="_blank">koson</a> 2007-12-26 17:55 <a href="http://www.cppblog.com/koson/archive/2007/12/26/39702.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>