﻿<?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++博客-专注于C,C++,VC,PYTHON等技术</title><link>http://www.cppblog.com/guan98413/</link><description>There should be one-- and preferably only one --obvious way to do it.</description><language>zh-cn</language><lastBuildDate>Thu, 23 Apr 2026 10:07:41 GMT</lastBuildDate><pubDate>Thu, 23 Apr 2026 10:07:41 GMT</pubDate><ttl>60</ttl><item><title>Rattling Off 5</title><link>http://www.cppblog.com/guan98413/archive/2008/12/30/70807.html</link><dc:creator>犹志</dc:creator><author>犹志</author><pubDate>Tue, 30 Dec 2008 13:48:00 GMT</pubDate><guid>http://www.cppblog.com/guan98413/archive/2008/12/30/70807.html</guid><wfw:comment>http://www.cppblog.com/guan98413/comments/70807.html</wfw:comment><comments>http://www.cppblog.com/guan98413/archive/2008/12/30/70807.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/guan98413/comments/commentRss/70807.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/guan98413/services/trackbacks/70807.html</trackback:ping><description><![CDATA[There are two ways of rising in the world, either by your own industry or by the folly of others<br>成功之路有两条：靠自己的努力或靠他人的愚蠢。<br><br>Don't part with your illusions.When they are gone you may still exist, but you have ceased to live.<br>不要放弃你的幻想。当幻想没有了以后，你还可以生存，但是你生犹死。
<img src ="http://www.cppblog.com/guan98413/aggbug/70807.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/guan98413/" target="_blank">犹志</a> 2008-12-30 21:48 <a href="http://www.cppblog.com/guan98413/archive/2008/12/30/70807.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rattling Off 4</title><link>http://www.cppblog.com/guan98413/archive/2008/12/30/70805.html</link><dc:creator>犹志</dc:creator><author>犹志</author><pubDate>Tue, 30 Dec 2008 13:44:00 GMT</pubDate><guid>http://www.cppblog.com/guan98413/archive/2008/12/30/70805.html</guid><wfw:comment>http://www.cppblog.com/guan98413/comments/70805.html</wfw:comment><comments>http://www.cppblog.com/guan98413/archive/2008/12/30/70805.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/guan98413/comments/commentRss/70805.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/guan98413/services/trackbacks/70805.html</trackback:ping><description><![CDATA[Choose a life of action, not one of ostentation.<br>要选择行动的一生，儿不是炫耀的一生。<br><br>If you have a great talents, industy will improve them; if you have but moderate abilities, industy will supply their deficiency.<br>如有你很有天赋，勤勉会使其更加完善；如果你能力一般，勤勉会补足其缺陷。<br><br>It is easier to fight for principles than to live up to them<br>为原则而斗争比实践该原则要容易。
<img src ="http://www.cppblog.com/guan98413/aggbug/70805.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/guan98413/" target="_blank">犹志</a> 2008-12-30 21:44 <a href="http://www.cppblog.com/guan98413/archive/2008/12/30/70805.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rattling Off 3</title><link>http://www.cppblog.com/guan98413/archive/2008/12/30/70802.html</link><dc:creator>犹志</dc:creator><author>犹志</author><pubDate>Tue, 30 Dec 2008 13:38:00 GMT</pubDate><guid>http://www.cppblog.com/guan98413/archive/2008/12/30/70802.html</guid><wfw:comment>http://www.cppblog.com/guan98413/comments/70802.html</wfw:comment><comments>http://www.cppblog.com/guan98413/archive/2008/12/30/70802.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/guan98413/comments/commentRss/70802.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/guan98413/services/trackbacks/70802.html</trackback:ping><description><![CDATA[The important &nbsp;thing in life is to have a great aim, and the determination to attain it.<br>人生的重要在于确立一个伟大的目标，并有决心使其实现。<br><br>Ideal is the beacon. Without ideal,there is no secure direction;without direction, there is no life<br>理想是指路明灯。没有理想，就没有坚定的方向；没有方向，就没有生活。<br>
<img src ="http://www.cppblog.com/guan98413/aggbug/70802.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/guan98413/" target="_blank">犹志</a> 2008-12-30 21:38 <a href="http://www.cppblog.com/guan98413/archive/2008/12/30/70802.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rattling Off 2</title><link>http://www.cppblog.com/guan98413/archive/2008/12/30/70799.html</link><dc:creator>犹志</dc:creator><author>犹志</author><pubDate>Tue, 30 Dec 2008 13:31:00 GMT</pubDate><guid>http://www.cppblog.com/guan98413/archive/2008/12/30/70799.html</guid><wfw:comment>http://www.cppblog.com/guan98413/comments/70799.html</wfw:comment><comments>http://www.cppblog.com/guan98413/archive/2008/12/30/70799.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/guan98413/comments/commentRss/70799.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/guan98413/services/trackbacks/70799.html</trackback:ping><description><![CDATA[A man can succeed at almost anything for which he has unlimited enthusiam.<br>只要有无限的热情，一个人几乎可以在任何事情上取得成功。<br><br>If you would hit the mark, you must aim a little above it. Every arrow that flies feels the attraction of earth.<br>要想射中靶心，必须瞄准比靶略微高些，因为脱靶之箭都受到地心引力的影响。<br><br>If you doubt yourself, then indeed you stand on shaky ground.<br>如果你怀疑自己，那么你的立足点却是不稳固了。 
<img src ="http://www.cppblog.com/guan98413/aggbug/70799.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/guan98413/" target="_blank">犹志</a> 2008-12-30 21:31 <a href="http://www.cppblog.com/guan98413/archive/2008/12/30/70799.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rattling off 1</title><link>http://www.cppblog.com/guan98413/archive/2008/12/30/70798.html</link><dc:creator>犹志</dc:creator><author>犹志</author><pubDate>Tue, 30 Dec 2008 13:24:00 GMT</pubDate><guid>http://www.cppblog.com/guan98413/archive/2008/12/30/70798.html</guid><wfw:comment>http://www.cppblog.com/guan98413/comments/70798.html</wfw:comment><comments>http://www.cppblog.com/guan98413/archive/2008/12/30/70798.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/guan98413/comments/commentRss/70798.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/guan98413/services/trackbacks/70798.html</trackback:ping><description><![CDATA[If a jewel falls into the mire, it remains as precious as befour; and though dust should ascend to heaven, its former worthlessness will not be altered.<br>宝石及时落在泥潭里，仍是一样可贵；尘土纵然扬到天上，还是没有价值。<br><br>There is no royal road to science, and only those who do not dread the fatiguing climb of its steep path have a chance of gaining its luminous summit.<br>在科学上没有平坦大道，只有不畏劳苦沿着崎岖之路攀登的人，才有希望大道光辉的顶点。 
<img src ="http://www.cppblog.com/guan98413/aggbug/70798.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/guan98413/" target="_blank">犹志</a> 2008-12-30 21:24 <a href="http://www.cppblog.com/guan98413/archive/2008/12/30/70798.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何禁止用户往U盘里写东西？</title><link>http://www.cppblog.com/guan98413/archive/2008/12/30/70770.html</link><dc:creator>犹志</dc:creator><author>犹志</author><pubDate>Tue, 30 Dec 2008 06:40:00 GMT</pubDate><guid>http://www.cppblog.com/guan98413/archive/2008/12/30/70770.html</guid><wfw:comment>http://www.cppblog.com/guan98413/comments/70770.html</wfw:comment><comments>http://www.cppblog.com/guan98413/archive/2008/12/30/70770.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/guan98413/comments/commentRss/70770.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/guan98413/services/trackbacks/70770.html</trackback:ping><description><![CDATA[<div class=postText>在一些安全相关领域，为了防止资料外泄也许会禁止U盘的使用，或者只允许从U盘如入，而禁止向U盘写数据。这是怎么实现的呢？如果要从根本上禁止USB设备的使用，估计要用到USB hub的一些信息，对系统底层变成，禁止USB设备的使用，但对于一般人来说似乎没有必要这么做。就目前来看有两种简单的方式来实现禁止U盘写操作，具体方式如下：<br>（1）更改注册表<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;打开注册表 &#8220;<span style="COLOR: #0000ff">HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control</span>&#8221;，然后创建一个名为&#8220;<span style="COLOR: #0000ff">StorageDevicePolicies</span>&#8221;的新key ，之后在&#8220;StorageDevicePolicies&#8221;下创建一个名为&#8220;<span style="COLOR: #0000ff">WriteProtect</span>&#8221;的DWORD value。当WriteProtect值为1时，用户将不能向USB设备写数据；WriteProtect为0时，则可以向USB设备写入数据。更改一下注册表项就能实现对U盘的访问策略，是不是很简单？<br>但这种方法也有弊端，就是只能使用在XP SP2以上（包括SP2）或者VSTA系统上，对于其他操作系统而言或许不能正常工作。<br>（2）使用gpedit更改系统策略<br>这种方式配置起来稍微繁琐一点儿，具体配置就不一一详述，可参阅相关文档。<br><br>以上两种做法孰好孰坏，还请各位使用者自己掂量。个人更倾向于第一种，呵呵，简单明了，对于做惯了开发的人来说比较实用。 <br></div>
<img src ="http://www.cppblog.com/guan98413/aggbug/70770.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/guan98413/" target="_blank">犹志</a> 2008-12-30 14:40 <a href="http://www.cppblog.com/guan98413/archive/2008/12/30/70770.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>How to monitor the File system?</title><link>http://www.cppblog.com/guan98413/archive/2008/12/30/70769.html</link><dc:creator>犹志</dc:creator><author>犹志</author><pubDate>Tue, 30 Dec 2008 06:37:00 GMT</pubDate><guid>http://www.cppblog.com/guan98413/archive/2008/12/30/70769.html</guid><wfw:comment>http://www.cppblog.com/guan98413/comments/70769.html</wfw:comment><comments>http://www.cppblog.com/guan98413/archive/2008/12/30/70769.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/guan98413/comments/commentRss/70769.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/guan98413/services/trackbacks/70769.html</trackback:ping><description><![CDATA[<p>Ultraedit,相信大部分开发人员都比较熟悉吧？各位在实用的过程中有没有注意到ultraedit较强的关联性呢？比如说，ultraedit已经打开了a.txt文件，此时在另外一个程序中对a.txt做了更改，ultraedit就能马上提示a.txt已被其他应用程序改变，提示用户是否需要重新载入。相信使用过ultraedit的人对这个印象比较深。这个功能是怎么实现的呢？在这里笔者略述一二。<br>要实现这样的功能，其实很简单，无怪乎调用系统函数，查看文件状态，比较文件更改时间等等，但总不至于用一线程一直读取文件状态吧？其实可以使用文件系统的事件通知机制来实现。<br>（1）对于dotnet应用来说，可以通过使用<span style="COLOR: #0000ff"><strong>fileSystemWatcher</strong></span>组件来实现，只需要设置Path，Filter等属性，实现Changed，Created，deleted，renamed等事件即可。注意，Path指要监控的文件目录，Filter指文件类型，在这里可以使用通配符，比如*.*等等<br>（2）对于非dotnet应用，可以使用系统的文件操作，通过<strong><span style="COLOR: #0000ff">FindFirstChangeNotification，</span></strong><a href="mk:@MSITStore:D:\Program%20Files\Microsoft%20Visual%20Studio\MSDN\2000JUL\1033\fileio.chm::/hh/winbase/filesio_0566.htm"><strong><span style="COLOR: #0000ff">FindNextChangeNotification</span></strong></a><span style="COLOR: #0000ff"> ，</span><a href="mk:@MSITStore:D:\Program%20Files\Microsoft%20Visual%20Studio\MSDN\2000JUL\1033\fileio.chm::/hh/winbase/filesio_1wku.htm"><strong><span style="COLOR: #0000ff">FindCloseChangeNotification</span></strong></a>，以及相应的Wait Functions（包括 <a href="mk:@MSITStore:D:\Program%20Files\Microsoft%20Visual%20Studio\MSDN\2000JUL\1033\dllproc.chm::/hh/winbase/synchro_5h2s.htm"><strong>SignalObjectAndWait</strong></a>, <a href="mk:@MSITStore:D:\Program%20Files\Microsoft%20Visual%20Studio\MSDN\2000JUL\1033\dllproc.chm::/hh/winbase/synchro_4ldg.htm"><strong>WaitForSingleObject</strong></a>, and <a href="mk:@MSITStore:D:\Program%20Files\Microsoft%20Visual%20Studio\MSDN\2000JUL\1033\dllproc.chm::/hh/winbase/synchro_5yrc.htm"><strong>WaitForSingleObjectEx</strong></a> 以及 <a href="mk:@MSITStore:D:\Program%20Files\Microsoft%20Visual%20Studio\MSDN\2000JUL\1033\dllproc.chm::/hh/winbase/synchro_9xbn.htm"><strong>WaitForMultipleObjects</strong></a>, <a href="mk:@MSITStore:D:\Program%20Files\Microsoft%20Visual%20Studio\MSDN\2000JUL\1033\dllproc.chm::/hh/winbase/synchro_5lbs.htm"><strong>WaitForMultipleObjectsEx</strong></a>, <a href="mk:@MSITStore:D:\Program%20Files\Microsoft%20Visual%20Studio\MSDN\2000JUL\1033\dllproc.chm::/hh/winbase/synchro_2esz.htm"><strong>MsgWaitForMultipleObjects</strong></a>, and <a href="mk:@MSITStore:D:\Program%20Files\Microsoft%20Visual%20Studio\MSDN\2000JUL\1033\dllproc.chm::/hh/winbase/synchro_6lh4.htm"><strong>MsgWaitForMultipleObjectsEx</strong></a> ）来实现和<span style="COLOR: #0000ff"><strong>fileSystemWatcher</strong><span style="COLOR: #000000">同样的功能，具体使用方法请参阅MSDN<br>在一些涉及到文件处理的程序中如果也能加上这种关联功能，则给用户的印象就比较深，而且更容易为用户所接受</span></span></p>
<img src ="http://www.cppblog.com/guan98413/aggbug/70769.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/guan98413/" target="_blank">犹志</a> 2008-12-30 14:37 <a href="http://www.cppblog.com/guan98413/archive/2008/12/30/70769.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>printf都做了什么？？</title><link>http://www.cppblog.com/guan98413/archive/2008/04/18/47530.html</link><dc:creator>犹志</dc:creator><author>犹志</author><pubDate>Fri, 18 Apr 2008 12:32:00 GMT</pubDate><guid>http://www.cppblog.com/guan98413/archive/2008/04/18/47530.html</guid><wfw:comment>http://www.cppblog.com/guan98413/comments/47530.html</wfw:comment><comments>http://www.cppblog.com/guan98413/archive/2008/04/18/47530.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/guan98413/comments/commentRss/47530.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/guan98413/services/trackbacks/47530.html</trackback:ping><description><![CDATA[最近在看以前的一些代码，发现程序中有一些函数返回指针，而且所返回的指针是stack指针，觉得很是奇怪，stack指针都是系统自己维护，出了作用域以后自动释放的，难道函数所返回的stack指针还能继续使用？以前的代码就是那样，而且运行也一直很正常，这是什么原因？觉得很是怪异。<br>为测试stack指针是否由系统管理，从函数中返回后是否继续可用，写了一些代码：
<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 src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;TestPointer.cpp&nbsp;:&nbsp;Defines&nbsp;the&nbsp;entry&nbsp;point&nbsp;for&nbsp;the&nbsp;console&nbsp;application.<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">stdafx.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">windows.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdlib.h</span><span style="COLOR: #000000">&gt;</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>typedef&nbsp;</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;Person<br><img id=Codehighlighter1_161_188_Open_Image onclick="this.style.display='none'; Codehighlighter1_161_188_Open_Text.style.display='none'; Codehighlighter1_161_188_Closed_Image.style.display='inline'; Codehighlighter1_161_188_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_161_188_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_161_188_Closed_Text.style.display='none'; Codehighlighter1_161_188_Open_Image.style.display='inline'; Codehighlighter1_161_188_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_161_188_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_161_188_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;iAge;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;iWeight;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">Person;<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: #008000">//</span><span style="COLOR: #008000">Printf都做了什么？<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">感觉调用printf时系统对stack进行了清理</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;GetString(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Person&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;GetPerson();<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">&nbsp;main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;argc,&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;argv[])<br><img id=Codehighlighter1_320_608_Open_Image onclick="this.style.display='none'; Codehighlighter1_320_608_Open_Text.style.display='none'; Codehighlighter1_320_608_Closed_Image.style.display='inline'; Codehighlighter1_320_608_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_320_608_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_320_608_Closed_Text.style.display='none'; Codehighlighter1_320_608_Open_Image.style.display='inline'; Codehighlighter1_320_608_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_320_608_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_320_608_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Hello&nbsp;World!\n</span><span style="COLOR: #000000">"</span><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/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pStr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;GetString();<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>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">感觉调用printf时系统对stack进行了清理</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%s</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;pStr);&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">将这一句去掉后运行试试？</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;Person&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m_pPersion&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;GetPerson();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">doooooo\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">将这一句去掉运行试试？</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Age&nbsp;=&nbsp;%d,&nbsp;Weight&nbsp;=&nbsp;%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;m_pPersion</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">iAge,&nbsp;m_pPersion</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">iWeight);<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>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</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><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">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;GetString(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_634_1000_Open_Image onclick="this.style.display='none'; Codehighlighter1_634_1000_Open_Text.style.display='none'; Codehighlighter1_634_1000_Closed_Image.style.display='inline'; Codehighlighter1_634_1000_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_634_1000_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_634_1000_Closed_Text.style.display='none'; Codehighlighter1_634_1000_Open_Image.style.display='inline'; Codehighlighter1_634_1000_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_634_1000_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_634_1000_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">简单的可以理解为：&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">heap：是由malloc之类函数分配的空间所在地。地址是由低向高增长的。&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">stack：是自动分配变量，以及函数调用的时候所使用的一些空间。地址是由高向低减少的。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">栈(stack)内存的情况</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;szMessage[</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;strcpy(szMessage,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">this&nbsp;is&nbsp;just&nbsp;a&nbsp;test!\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%s</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;szMessage);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;szMessage;<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>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">堆(heap)内存的情况</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_888_997_Open_Image onclick="this.style.display='none'; Codehighlighter1_888_997_Open_Text.style.display='none'; Codehighlighter1_888_997_Closed_Image.style.display='inline'; Codehighlighter1_888_997_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_888_997_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_888_997_Closed_Text.style.display='none'; Codehighlighter1_888_997_Open_Image.style.display='inline'; Codehighlighter1_888_997_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_888_997_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">/**/</span><span id=Codehighlighter1_888_997_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">char&nbsp;*&nbsp;pRet&nbsp;=&nbsp;(char&nbsp;*)malloc(&nbsp;100&nbsp;*&nbsp;sizeof(char));<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;strcpy(pRet,&nbsp;"This&nbsp;is&nbsp;just&nbsp;a&nbsp;test!\n");<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;pRet;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<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>Person&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;GetPerson()<br><img id=Codehighlighter1_1024_1138_Open_Image onclick="this.style.display='none'; Codehighlighter1_1024_1138_Open_Text.style.display='none'; Codehighlighter1_1024_1138_Closed_Image.style.display='inline'; Codehighlighter1_1024_1138_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_1024_1138_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1024_1138_Closed_Text.style.display='none'; Codehighlighter1_1024_1138_Open_Image.style.display='inline'; Codehighlighter1_1024_1138_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_1024_1138_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_1024_1138_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">stack</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Person&nbsp;m_Person;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;m_Person.iAge&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">24</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;m_Person.iWeight&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">55</span><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/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">m_Person;<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>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">更换成heap形式的又是怎样？</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></span><span style="COLOR: #000000">}</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>上述程序运行环境为：WindowsXP&nbsp;sp2&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;Visual&nbsp;C</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;Enterprise&nbsp;Edition&nbsp;</span><span style="COLOR: #000000">6.0</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;Vs6Sp6</span></div>
<a title=源代码 href="http://www.cppblog.com/Files/guan98413/InputCharArray.rar">源代码</a>
<img src ="http://www.cppblog.com/guan98413/aggbug/47530.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/guan98413/" target="_blank">犹志</a> 2008-04-18 20:32 <a href="http://www.cppblog.com/guan98413/archive/2008/04/18/47530.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>