﻿<?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++博客-w2001-随笔分类-C/C++语言</title><link>http://www.cppblog.com/w2001/category/3747.html</link><description>camouflage.</description><language>zh-cn</language><lastBuildDate>Tue, 24 Feb 2009 13:58:04 GMT</lastBuildDate><pubDate>Tue, 24 Feb 2009 13:58:04 GMT</pubDate><ttl>60</ttl><item><title>Windows下SVN最简安装</title><link>http://www.cppblog.com/w2001/archive/2008/05/18/50298.html</link><dc:creator>w2001</dc:creator><author>w2001</author><pubDate>Sun, 18 May 2008 10:46:00 GMT</pubDate><guid>http://www.cppblog.com/w2001/archive/2008/05/18/50298.html</guid><wfw:comment>http://www.cppblog.com/w2001/comments/50298.html</wfw:comment><comments>http://www.cppblog.com/w2001/archive/2008/05/18/50298.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/w2001/comments/commentRss/50298.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/w2001/services/trackbacks/50298.html</trackback:ping><description><![CDATA[1. 安装TortoiseSVN客户端<br><br>2. 安装服务器端svn-x.x.x-setup.exe<br><br>3. 手工创建svn储存库(repository)，也可以用TortoiseSVN来做<br>svnadmin create F:\svn\<br><br>4. 配置svn储存库，使用密码，设置用户名/密码<br>编辑/conf/svnserve.conf,<br># [general]<br>password-db = passwd<br>编辑/conf/passwd,<br># [users]<br>my_id = my_password<br><br>5. 手工后台运行svn服务器，用TortoiseSVN测试一下成功否<br>svnserve -d -r F:\svn<br><br>6. 如果需要将svn配置成windows服务,安装svnservice最简单<br><br>7. 接下来，用TortoiseSVN签入签出吧<br><br>8. Apache就免了，不跨平台开发的话，没太多用<br><br><a href="http://tortoisesvn.tigris.org/">http://tortoisesvn.tigris.org/</a><br><a href="http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91">http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91</a><br><a href="http://svnservice.tigris.org/">http://svnservice.tigris.org/</a><br>  <img src ="http://www.cppblog.com/w2001/aggbug/50298.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/w2001/" target="_blank">w2001</a> 2008-05-18 18:46 <a href="http://www.cppblog.com/w2001/archive/2008/05/18/50298.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC++ 2005 CRT堆调试</title><link>http://www.cppblog.com/w2001/archive/2008/05/10/49390.html</link><dc:creator>w2001</dc:creator><author>w2001</author><pubDate>Fri, 09 May 2008 20:40:00 GMT</pubDate><guid>http://www.cppblog.com/w2001/archive/2008/05/10/49390.html</guid><wfw:comment>http://www.cppblog.com/w2001/comments/49390.html</wfw:comment><comments>http://www.cppblog.com/w2001/archive/2008/05/10/49390.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/w2001/comments/commentRss/49390.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/w2001/services/trackbacks/49390.html</trackback:ping><description><![CDATA[<span style="font-weight: bold;">1. 启用内存泄漏检测</span><br><br>#define _CRTDBG_MAP_ALLOC<br>#include &lt;stdlib.h&gt;<br>#include &lt;crtdbg.h&gt;<br><br>当退出程序位置固定时，用：<br>_CrtDumpMemoryLeaks(); <br><br>定义了_CRTDBG_MAP_ALLOC 时，会显示内存块类型和内存块分配编号（在大括号内）。<br><br>当退出位置不固定时，用：<br>_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );<br><br>该语句在程序退出时自动调用 _CrtDumpMemoryLeaks。必须同时设置 _CRTDBG_ALLOC_MEM_DF 和 _CRTDBG_ALLOC_MEM_DF 两个位域。<br><br><span style="font-weight: bold;">2. 内存块类型</span><br><br>&#8220;普通块&#8221;是由程序分配的普通内存。<br>&#8220;客户端块&#8221;是由 MFC 程序用于需要析构函数的对象的特殊类型内存块。MFC new 操作根据创建对象的需要创建普通块或客户端块。<br>&#8220;CRT 块&#8221;是由 CRT 库为自己使用而分配的内存块。CRT 库处理这些块的释放，因此您不大可能在内存泄漏报告中看到这些块，除非出现严重错误（例如 CRT 库损坏）。<br><br><span style="font-weight: bold;">3. 内存泄露定位 - 在内存分配编号上设置断点</span><br><br>先通过_CrtDumpMemoryLeaks查到泄露的内存块分配号n，然后添加语句<br><br>_CrtSetBreakAlloc(n);<br><br>Debug程序运行后，将自动断点至分配处<br><br><span style="font-weight: bold;">4. 内存状态比较</span><br><br>_CrtMemCheckpoint( &amp;s1 );<br>// memory allocations take place here<br>_CrtMemCheckpoint( &amp;s2 );<br><br>if ( _CrtMemDifference( &amp;s3, &amp;s1, &amp;s2) )<br>&nbsp;&nbsp; _CrtMemDumpStatistics( &amp;s3 );<br><br><span style="font-weight: bold;">5. CRT内存泄露误报</span><br><br>在某些情况下，_CrtDumpMemoryLeaks 可能给出错误的内存泄漏指示。如果使用将内部分配标记为 _NORMAL_BLOCK 而不是 _CRT_BLOCK 或 _CLIENT_BLOCK 的库，则可能发生这种情况。其结果是，_CrtDumpMemoryLeaks 无法区分用户分配和内部库分配。如果库分配的全局析构函数在您调用 _CrtDumpMemoryLeaks 的位置之后运行，则每个内部库分配都被作为内存泄漏进行报告。Visual Studio .NET 之前的早期版本的标准模板库会导致 _CrtDumpMemoryLeaks 报告这样的错误指示，但在最新版本中此问题已经得到解决。<br>  <img src ="http://www.cppblog.com/w2001/aggbug/49390.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/w2001/" target="_blank">w2001</a> 2008-05-10 04:40 <a href="http://www.cppblog.com/w2001/archive/2008/05/10/49390.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>glut、glew、CxImage....</title><link>http://www.cppblog.com/w2001/archive/2008/05/01/48593.html</link><dc:creator>w2001</dc:creator><author>w2001</author><pubDate>Thu, 01 May 2008 08:24:00 GMT</pubDate><guid>http://www.cppblog.com/w2001/archive/2008/05/01/48593.html</guid><wfw:comment>http://www.cppblog.com/w2001/comments/48593.html</wfw:comment><comments>http://www.cppblog.com/w2001/archive/2008/05/01/48593.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/w2001/comments/commentRss/48593.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/w2001/services/trackbacks/48593.html</trackback:ping><description><![CDATA[<span style="font-weight: bold;">glut/glew简单配置</span><br style="font-weight: bold;"><br>1. 所有lib，丢C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib<br>2. 所有.h，丢C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include\gl<br>3. 所有.dll和bin，丢C:\WINDOWS\system32<br>4. 把项目的Unicode去掉，包括Debug和Release(for glut)<br>5. 项目预编译头文件里面，添：<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">GL</span><span style="color: #000000;">/</span><span style="color: #000000;">glew.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">GL</span><span style="color: #000000;">/</span><span style="color: #000000;">glut.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#pragma&nbsp;comment(lib,</span><span style="color: #000000;">"</span><span style="color: #000000;">opengl32.lib</span><span style="color: #000000;">"</span><span style="color: #000000;">)<br>#pragma&nbsp;comment(lib,</span><span style="color: #000000;">"</span><span style="color: #000000;">glew32.lib</span><span style="color: #000000;">"</span><span style="color: #000000;">)<br>#pragma&nbsp;comment(lib,</span><span style="color: #000000;">"</span><span style="color: #000000;">glut.lib</span><span style="color: #000000;">"</span><span style="color: #000000;">)<br>#pragma&nbsp;comment(lib,</span><span style="color: #000000;">"</span><span style="color: #000000;">glut32.lib</span><span style="color: #000000;">"</span><span style="color: #000000;">)</span></div>
6. 开始玩....进一步参考简单glut及glew程序模板<br><br><span style="font-weight: bold;">CxImage在OpenGl中的应用<br></span><br>注意，不能将CxImage::GetBits()直接用于OpenGL，否则会：<br>1. 纹理上下颠倒<br>2. 纹理中像素点格式为BGR<br>3. 不能用于GL_RGBA，只能GL_RGB，GetBits获取不到Alpha分量<br><br>如果一定要用CxImage::GetBits()，必须进行如下操作：<br>1. CxImage::SwapRGB2BGR()<br>2. CxImage::Flip()<br><br>推荐在OpenGl全用CxImage::Encode2RGBA获取Bitmap，用了之后啥麻烦事都没了.....<br>     <img src ="http://www.cppblog.com/w2001/aggbug/48593.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/w2001/" target="_blank">w2001</a> 2008-05-01 16:24 <a href="http://www.cppblog.com/w2001/archive/2008/05/01/48593.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>指针分析补充</title><link>http://www.cppblog.com/w2001/archive/2007/03/13/19674.html</link><dc:creator>w2001</dc:creator><author>w2001</author><pubDate>Mon, 12 Mar 2007 16:22:00 GMT</pubDate><guid>http://www.cppblog.com/w2001/archive/2007/03/13/19674.html</guid><wfw:comment>http://www.cppblog.com/w2001/comments/19674.html</wfw:comment><comments>http://www.cppblog.com/w2001/archive/2007/03/13/19674.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/w2001/comments/commentRss/19674.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/w2001/services/trackbacks/19674.html</trackback:ping><description><![CDATA[int a[10]={0,1,2};<br /><br />有：<br />a-&gt;[10]-&gt;int<br />a-&gt;[]-&gt;int<br />a-&gt;*-&gt;int<br /><br />则：<br />a: a-&gt;*-&gt;int<br />&amp;a: &amp;a-&gt;*-&gt;[10]-&gt;int  注意这里的[10]不能替换成[]或*!<br /><br />int b[3][3] = { {1,2,3},{4,5,6},{7,8,9}};<br />int **c;<br /><br />有：<br />b-&gt;[3]-&gt;[3]-&gt;int<br />b-&gt;[]-&gt;[3]-&gt;int<br />b-&gt;*-&gt;[3]-&gt;int<br /><br />则：<br />b:  b-&gt;*-&gt;[3]-&gt;int  即：int (*pb)[3]<br />b+n：int (*)[3]<br />*(b+n)：int [3]，即 b[n]<br />*(*(b+n)+m)：int，即 b[n][m]<br /><br />则有：<br />b：[3]-&gt;[3]-&gt;int<br />&amp;b：*-&gt;[3]-&gt;[3]-&gt;int<br />&amp;b[n]：*-&gt;[3]-&gt;int<br />c：*-&gt;*-&gt;int<br /><br />上面b、&amp;b、&amp;b[n]三个表达式显然跟c的类型不一致<img src ="http://www.cppblog.com/w2001/aggbug/19674.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/w2001/" target="_blank">w2001</a> 2007-03-13 00:22 <a href="http://www.cppblog.com/w2001/archive/2007/03/13/19674.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何查看cl编译器生成的汇编代码？</title><link>http://www.cppblog.com/w2001/archive/2007/03/13/19673.html</link><dc:creator>w2001</dc:creator><author>w2001</author><pubDate>Mon, 12 Mar 2007 16:21:00 GMT</pubDate><guid>http://www.cppblog.com/w2001/archive/2007/03/13/19673.html</guid><wfw:comment>http://www.cppblog.com/w2001/comments/19673.html</wfw:comment><comments>http://www.cppblog.com/w2001/archive/2007/03/13/19673.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/w2001/comments/commentRss/19673.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/w2001/services/trackbacks/19673.html</trackback:ping><description><![CDATA[显然，直接在vs2005的Disassembly窗口中查看是不方便的。其实，cl.exe提供了一个/FAs的编译选项，而添加这一选项最简单的办法为：首先找到“项目属性-&gt;Configuration Properties-&gt;C/C++-&gt;Command Line-&gt;Addtional options”，然后在其中添入"/FAs"，然后F5编译，继而在源程序的同一目录下，便可找到对应的.asm文件了。这非常有用，到时候在分析栈框结构时将要用到。<img src ="http://www.cppblog.com/w2001/aggbug/19673.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/w2001/" target="_blank">w2001</a> 2007-03-13 00:21 <a href="http://www.cppblog.com/w2001/archive/2007/03/13/19673.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>.bss段和.data段的区别</title><link>http://www.cppblog.com/w2001/archive/2007/03/13/19672.html</link><dc:creator>w2001</dc:creator><author>w2001</author><pubDate>Mon, 12 Mar 2007 16:09:00 GMT</pubDate><guid>http://www.cppblog.com/w2001/archive/2007/03/13/19672.html</guid><wfw:comment>http://www.cppblog.com/w2001/comments/19672.html</wfw:comment><comments>http://www.cppblog.com/w2001/archive/2007/03/13/19672.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/w2001/comments/commentRss/19672.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/w2001/services/trackbacks/19672.html</trackback:ping><description><![CDATA[用cl编译两个小程序如下：<br /><br />程序1:<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 9pt; 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 src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> ar[</span><span style="COLOR: #000000">30000</span><span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> main()<br /><img id="Codehighlighter1_27_37_Open_Image" onclick="this.style.display='none'; Codehighlighter1_27_37_Open_Text.style.display='none'; Codehighlighter1_27_37_Closed_Image.style.display='inline'; Codehighlighter1_27_37_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_27_37_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_27_37_Closed_Text.style.display='none'; Codehighlighter1_27_37_Open_Image.style.display='inline'; Codehighlighter1_27_37_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_27_37_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_27_37_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    ......<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />} </span></span></div><br />程序2:<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 9pt; 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_17_35_Open_Image" onclick="this.style.display='none'; Codehighlighter1_17_35_Open_Text.style.display='none'; Codehighlighter1_17_35_Closed_Image.style.display='inline'; Codehighlighter1_17_35_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_17_35_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_17_35_Closed_Text.style.display='none'; Codehighlighter1_17_35_Open_Image.style.display='inline'; Codehighlighter1_17_35_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> ar[</span><span style="COLOR: #000000">300000</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_17_35_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_17_35_Open_Text"><span style="COLOR: #000000">{</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">6</span><span style="COLOR: #000000"> }</span></span><span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> main()<br /><img id="Codehighlighter1_50_60_Open_Image" onclick="this.style.display='none'; Codehighlighter1_50_60_Open_Text.style.display='none'; Codehighlighter1_50_60_Closed_Image.style.display='inline'; Codehighlighter1_50_60_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_50_60_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_50_60_Closed_Text.style.display='none'; Codehighlighter1_50_60_Open_Image.style.display='inline'; Codehighlighter1_50_60_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_50_60_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_50_60_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    ......<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />} </span></span></div><br />发现程序2编译之后所得的.exe文件比程序1的要大得多。当下甚为不解，于是手工编译了一下，并使用了/FAs编译选项来查看了一下其各自的.asm，发现在程序1.asm中ar的定义如下：<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 9pt; 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 src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">_BSS SEGMENT<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />     ?ar@@3PAHA DD 0493e0H DUP (?)    ; ar<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />_BSS ENDS </span></div><br />而在程序2.asm中，ar被定义为：<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 9pt; 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 src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">_DATA SEGMENT<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />     ?ar@@3PAHA DD 01H     ; ar<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />                DD 02H<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />                DD 03H<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />                ORG $+1199988<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />_DATA ENDS </span></div><br />区别很明显，一个位于.bss段，而另一个位于.data段，两者的区别在于：全局的未初始化变量存在于.bss段中，具体体现为一个占位符；全局的已初始化变量存于.data段中；而函数内的自动变量都在栈上分配空间。.bss是不占用.exe文件空间的，其内容由操作系统初始化（清零）；而.data却需要占用，其内容由程序初始化，因此造成了上述情况。<br /><br />相关参考： <a href="http://www.linuxsir.org/bbs/showthread.php?t=204807">http://www.linuxsir.org/bbs/showthread.php?t=204807</a><img src ="http://www.cppblog.com/w2001/aggbug/19672.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/w2001/" target="_blank">w2001</a> 2007-03-13 00:09 <a href="http://www.cppblog.com/w2001/archive/2007/03/13/19672.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>汉字编码浅析</title><link>http://www.cppblog.com/w2001/archive/2007/03/13/19671.html</link><dc:creator>w2001</dc:creator><author>w2001</author><pubDate>Mon, 12 Mar 2007 16:05:00 GMT</pubDate><guid>http://www.cppblog.com/w2001/archive/2007/03/13/19671.html</guid><wfw:comment>http://www.cppblog.com/w2001/comments/19671.html</wfw:comment><comments>http://www.cppblog.com/w2001/archive/2007/03/13/19671.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/w2001/comments/commentRss/19671.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/w2001/services/trackbacks/19671.html</trackback:ping><description><![CDATA[1. GBK是GB2312与BIG5的超集，结构基本相同<br />2. GB13000/Unicode是等同采用ISO 10646/Unicode的国家标准<br />3. GB13000/Unicode又是GBK的超集<br />4. UTF-8/UTF-16只是Unicode的编码变种，并不是字符集合的变种<br />5. GB18030是目前最大的汉字字符集合，比GB13000都要大<br />6. GB18030不是简单的GBK超集，其体系结构完全不一样<br />7. GB18030从未实现并真正应用过......<br />8. GBK是国家规范，GB2312/GB18030/GB13000则为国家标准<br />9. ASCII、GB2312、GBK到GB18030是向下兼容的（另一说）<br />10. Unicode只与ASCII兼容（另一说）<br /><br />GB2312&lt;GBK&lt;GB13000/Unicode&lt;ISO 10646/Unicode<br />BIG5&lt;GBK&lt;GB13000/Unicode&lt;ISO 10646/Unicode<br />GB13000/Unicode&lt;GB18030<br />Unicode==UTF-8==UTF-16<br /><br />参考：<br />1. <a href="http://news.csdn.net/n/20060929/95616.html">程序员趣味读物：谈谈Unicode编码<br /></a>2. <a href="http://zh.wikipedia.org/wiki/GBK">维基百科全书 - GBK<br /></a>3. <a href="http://www.china-language.gov.cn/webinfopub/list.asp?id=1355&amp;columnid=143&amp;columnlayer=00860143">用信息化手段进行语言文字研究<font color="#002c99"></font></a><img src ="http://www.cppblog.com/w2001/aggbug/19671.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/w2001/" target="_blank">w2001</a> 2007-03-13 00:05 <a href="http://www.cppblog.com/w2001/archive/2007/03/13/19671.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>