锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久这里有精品视频,国产精品视频久久,国产综合亚洲精品一区二http://m.shnenglu.com/finehai/category/11209.html褰撴椂鍙亾鏄甯竳zh-cnTue, 24 Apr 2012 17:03:13 GMTTue, 24 Apr 2012 17:03:13 GMT60銆愯漿銆慍++ 铏氬嚱鏁拌〃瑙f瀽 http://m.shnenglu.com/finehai/archive/2012/04/24/172574.htmlBlueseaBlueseaTue, 24 Apr 2012 03:44:00 GMThttp://m.shnenglu.com/finehai/archive/2012/04/24/172574.htmlhttp://m.shnenglu.com/finehai/comments/172574.htmlhttp://m.shnenglu.com/finehai/archive/2012/04/24/172574.html#Feedback0http://m.shnenglu.com/finehai/comments/commentRss/172574.htmlhttp://m.shnenglu.com/finehai/services/trackbacks/172574.html闃呰鍏ㄦ枃

Bluesea 2012-04-24 11:44 鍙戣〃璇勮
]]>
STL涓璵ap鐢ㄦ硶璇﹁Вhttp://m.shnenglu.com/finehai/archive/2009/10/22/99175.htmlBlueseaBlueseaThu, 22 Oct 2009 02:55:00 GMThttp://m.shnenglu.com/finehai/archive/2009/10/22/99175.htmlhttp://m.shnenglu.com/finehai/comments/99175.htmlhttp://m.shnenglu.com/finehai/archive/2009/10/22/99175.html#Feedback1http://m.shnenglu.com/finehai/comments/commentRss/99175.htmlhttp://m.shnenglu.com/finehai/services/trackbacks/99175.html闃呰鍏ㄦ枃

Bluesea 2009-10-22 10:55 鍙戣〃璇勮
]]>
澶氬獟浣撳畾鏃跺櫒http://m.shnenglu.com/finehai/archive/2009/09/12/95998.htmlBlueseaBlueseaSat, 12 Sep 2009 05:53:00 GMThttp://m.shnenglu.com/finehai/archive/2009/09/12/95998.htmlhttp://m.shnenglu.com/finehai/comments/95998.htmlhttp://m.shnenglu.com/finehai/archive/2009/09/12/95998.html#Feedback0http://m.shnenglu.com/finehai/comments/commentRss/95998.htmlhttp://m.shnenglu.com/finehai/services/trackbacks/95998.html璁℃椂綺懼害鍙埌1ms銆傝繖涓鏃剁簿搴︺佸浜庝竴鑸殑瀹炴椂緋葷粺鎺у埗瀹屽叏鍙互婊¤凍瑕佹眰銆傜幇灝嗙敱C錛嬶紜   Builder   4.0鎻愪緵鐨勯噸鏂板皝瑁呭悗鐨勪竴緇勪笌鏃墮棿鐩稿叧鐨勪富瑕佹帴鍙e嚱鏁幫紙鍑芥暟鍚嶃佸弬鏁般佸姛鑳戒笌Win32   API鍩烘湰鐩稿悓錛夎鏄庡涓嬶細(xì)     
    
 1錛嶥WORD   timeGetTime(void)    
  銆 榪斿洖浠嶹indows鍚姩寮濮嬬粡榪囩殑姣鏁般傛渶澶у間負(fù)232錛岀害49.71澶┿?nbsp;    

 2錛嶮MRESULT   timeSetEvent(    
  銆銆UINT   uDelay,    
  銆銆UINT   uResolution,    
  銆銆LPTIMECALLBACK   lpTimeProc,    
  銆銆DWORD   dwUser,    
  銆銆UINT   fuEvent)    
   
  銆 璇ュ嚱鏁拌緗竴涓畾鏃跺洖璋冧簨浠訛紝姝や簨浠跺彲浠ユ槸涓涓竴嬈℃т簨浠舵垨鍛ㄦ湡鎬т簨浠躲備簨浠朵竴鏃﹁嬋媧伙紝渚胯皟鐢ㄦ寚瀹氱殑鍥炶皟鍑芥暟錛屾垚鍔熷悗榪斿洖浜嬩歡鐨勬爣璇嗙浠g爜錛屽惁鍒欒繑鍥濶ULL銆傚弬鏁拌鏄庡涓嬶細(xì)  
   
  銆銆uDelay錛氫互姣鎸囧畾浜嬩歡鐨勫懆鏈熴?   
  銆銆UResolution錛氫互姣鎸囧畾寤舵椂鐨勭簿搴︼紝鏁板艱秺灝忓畾鏃跺櫒浜嬩歡鍒嗚鯨鐜囪秺楂樸傜己鐪佸間負(fù)1ms銆?   
  銆銆LpTimeProc錛氭寚鍚戜竴涓洖璋冨嚱鏁般?   
  銆銆DwUser錛氬瓨鏀劇敤鎴鋒彁渚涚殑鍥炶皟鏁版嵁銆?   
  銆銆FuEvent錛氭寚瀹氬畾鏃跺櫒浜嬩歡綾誨瀷錛?   
  銆銆TIME_ONESHOT錛歶Delay姣鍚庡彧浜х敓涓嬈′簨浠?   
  銆銆TIME_PERIODIC   錛氭瘡闅攗Delay姣鍛ㄦ湡鎬у湴浜х敓浜嬩歡銆?nbsp;    
    
 3錛嶮MRESULT   timeKillEvent(UINT   uTimerID)    
  銆 璇ュ嚱鏁板彇娑堜竴涓寚瀹氱殑瀹氭椂鍣ㄥ洖璋冧簨浠躲倁TimerID鏍囪瘑瑕佸彇娑堢殑浜嬩歡錛堢敱timeSetEvent鍑芥暟榪斿洖鐨勬爣璇嗙錛夈傚鏋滄垚鍔熷垯榪斿洖TIMERR_NOERROR錛屽鏋滃畾鏃跺櫒鏃墮棿涓嶅瓨鍦ㄥ垯榪斿洖MMSYSERR_INVALPARAM銆?nbsp;    

4錛庡洖璋冨嚱鏁?br>  銆銆void   CALLBACK   TimeProc(    
  銆銆UINT   uID,    
  銆銆UINT   uMsg,    
  銆銆DWORD   dwUser,    
  銆銆DWORD   dw1,    
  銆銆DWORD   dw2);    
   
  銆銆璇ュ嚱鏁版槸涓涓簲鐢ㄧ▼搴忓畾涔夌殑鍥炶皟鍑芥暟錛屽嚭鐜板畾鏃跺櫒浜嬩歡鏃惰鍑芥暟琚皟鐢ㄣ俆imeProc鏄簲鐢ㄧ▼搴忓畾涔夌殑鍑芥暟鍚嶇殑鍗犱綅絎︺備嬌鐢ㄨ鍑芥暟  
  鏃惰娉ㄦ剰鐨勬槸錛屽畠鍙兘璋冪敤浠ヤ笅鏈夐檺鐨勫嚑緇凙PI鍑芥暟錛歅ostMessage錛宼imeGetSystemTime錛?  timeGetTime錛?  timeSetEvent錛宼imeKillEvent  
  錛宮idiOutShortMsg,   midiOutLongMsg錛孫utputDebugString銆傚悓鏃朵篃涓嶈浣跨敤瀹屾垚鏃墮棿寰堥暱鐨凙PI鍑芥暟錛岀▼搴忓敖鍙兘綆鐭?nbsp;    
    
  銆銆浣跨敤浠ヤ笂涓緇勫嚱鏁板氨鍙互瀹屾垚姣綰х簿搴︾殑璁℃椂鍜屾帶鍒訛紙鍦–++Builder涓嬌鐢ㄦ椂瑕佸皢澶存枃浠秏msystem.h鍔犲埌紼嬪簭涓級銆傜敱浜庡皢瀹氭椂鎺? 
  鍒剁簿紜埌鍑犳縐掞紝瀹氭椂鍣ㄤ簨浠跺皢鍗犵敤澶ч噺鐨凜PU鏃墮棿鍜岀郴緇熻祫婧愶紝鎵浠ュ湪婊¤凍鎺у埗瑕佹眰鐨勫墠鎻愪笅錛屽簲灝介噺灝嗗弬鏁皍Resolution鐨勬暟鍊煎澶с傝? 
  涓斿畾鏃跺櫒瀹炴椂鎺у埗鍔熻兘瀹屾垚鍚庤灝藉揩閲婃斁銆?nbsp; 

娉ㄦ剰浠ヤ笅鍑犵偣闂錛?br>涓銆佸洖璋冨嚱鏁扮殑鍙傛暟涓嶈兘鏈夎錛屽惁鍒欏彲鑳藉紩璧風(fēng)▼搴忓穿鎺夛紱
浜屻佷簨浠惰皟鐢ㄥ懆鏈焨Delay涓嶈兘灝忎簬浜嬩歡澶勭悊鏃墮棿錛屽惁鍒欎細(xì)寮曡搗紼嬪簭宕╂簝錛?br>涓夈侀氳繃dwUser緇欏洖璋冨嚱鏁頒紶閫掑弬鏁?/span>

渚嬬▼濡備笅錛?br>
 1MMRESULT g_wTimerID = 0;

      //鍥炶皟鍑芥暟錛屽弬鏁頒笉鑳芥湁閿?/span>
 2void CALLBACK CDsisiiDlg::SendFun(UINT wTimerID, UINT msg, DWORD dwUser, DWORD dwl, DWORD dw2)
 3{
           CDsisiiDlg* pdcpackerdlg = (CDsisiiDlg*)dwUser;
           ...
 4}

 5
 6bool  CDsisiiDlg::CreateTimer()
 7
 8    TIMECAPS   tc;   
 9    UINT wTimerRes; 
10
11    //璁劇疆澶氬獟浣撳畾鏃跺櫒  
12    if(timeGetDevCaps(&tc,sizeof(TIMECAPS))!=TIMERR_NOERROR)//鍚戞満鍣ㄧ敵璇蜂竴涓濯掍綋瀹氭椂鍣?nbsp;      
13        return false;
14
15    //鑾峰緱鏈哄櫒鍏佽鐨勬椂闂撮棿闅旓紙涓鑸彲杈懼埌1姣錛?nbsp;  
16    wTimerRes=min(max(tc.wPeriodMin,1),tc.wPeriodMax);   
17
18    //瀹氭椂鍣ㄥ紑濮嬪伐浣?nbsp;  
19    timeBeginPeriod(wTimerRes);   
20
21    //姣忚繃6姣璋冪敤鍥炶皟鍑芥暟timerback(),wTimerID涓哄畾鏃跺櫒ID.TIME_PERIODIC琛ㄥ懆鏈熸ц皟鐢紝TIME_ONESHOT琛ㄥ彧浜х敓涓嬈′簨浠?nbsp;  
22    g_wTimerID = timeSetEvent(6,  wTimerRes, (LPTIMECALLBACK)SendFun,  (DWORD)this, TIME_PERIODIC);   
23    if(g_wTimerID == 0)
24        return false;
25
26    return true;
27}

28
29//鍒犻櫎瀹氭椂鍣?/span>
30void CDsisiiDlg::DestroyTimer()
31{
32    if (g_wTimerID)
33    {
34        timeKillEvent(g_wTimerID);
35        g_wTimerID = 0;
36    }

37}


Bluesea 2009-09-12 13:53 鍙戣〃璇勮
]]>
闈為潤鎬佸嚱鏁幫紝闈為潤鎬佸彉閲忎笌闈欐佸嚱鏁幫紝闈欐佸彉閲?/title><link>http://m.shnenglu.com/finehai/archive/2009/08/29/94767.html</link><dc:creator>Bluesea</dc:creator><author>Bluesea</author><pubDate>Sat, 29 Aug 2009 08:04:00 GMT</pubDate><guid>http://m.shnenglu.com/finehai/archive/2009/08/29/94767.html</guid><wfw:comment>http://m.shnenglu.com/finehai/comments/94767.html</wfw:comment><comments>http://m.shnenglu.com/finehai/archive/2009/08/29/94767.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/finehai/comments/commentRss/94767.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/finehai/services/trackbacks/94767.html</trackback:ping><description><![CDATA[<p><strong>涓銆佸嚱鏁?br></strong><br>鍑芥暟鐨勫紩鍏ュ彲浠ュ噺灝戠▼搴忕殑鐩爣浠g爜錛屽疄鐜扮▼搴忎唬鐮佺殑鍏變韓銆備絾鏄紝鍑芥暟璋冪敤涔熼渶瑕佷竴浜涙椂闂村拰絀洪棿鏂歸潰鐨勫紑閿錛屽洜涓鴻皟鐢ㄥ嚱鏁板疄闄呬笂灝嗙▼搴忔墽琛屾祦紼嬭漿縐誨埌琚皟鍑芥暟涓紝琚皟鍑芥暟鐨勭▼搴忎唬鐮佹墽琛屽畬鍚庯紝鍐嶈繑鍥炲埌璋冪敤鐨勫湴鏂廣傝繖縐嶈皟鐢ㄦ搷浣滆姹傝皟鐢ㄥ墠淇濇姢鐜板満騫惰蹇嗘墽琛岀殑鍦板潃錛岃繑鍥炲悗鎭㈠鐜板満錛屽茍鎸夊師鏉ヤ繚瀛樼殑鍦板潃緇х畫鎵ц銆傚浜庤緝闀跨殑鍑芥暟榪欑寮閿鍙互蹇界暐涓嶈錛屼絾鏄浜庝竴浜涘嚱鏁頒綋浠g爜寰堢煭錛屼絾鍙堣棰戠箒鍦拌皟鐢ㄧ殑鍑芥暟錛屽氨涓嶈兘蹇借榪欑寮閿銆傚紩鍏ュ唴鑱斿嚱鏁板拰瀹忓嚱鏁版鏄負(fù)浜嗚В鍐寵繖涓棶棰橈紝鎻愰珮紼嬪簭鐨勮繍琛屾晥鐜囥?銆銆<br><br>鍦ㄧ▼搴忕紪璇戞椂錛岀紪璇戝櫒灝嗙▼搴忎腑鍑虹幇鐨勫唴鑱斿嚱鏁?瀹忓嚱鏁?鐨勮皟鐢ㄨ〃杈懼紡鐢ㄥ唴鑱斿嚱鏁?瀹忓嚱鏁?鐨勫嚱鏁頒綋鏉ヨ繘琛屾浛鎹€傜敱浜庡湪緙栬瘧鏃跺皢鍑芥暟浣撲腑鐨勪唬鐮佹浛浠e埌紼嬪簭涓紝鍥犳浼?xì)澧炲姞鐩爣绋嬪簭浠g爜閲忓Q岃繘鑰屽鍔犵┖闂村紑閿錛岃屽湪鏃墮棿寮閿涓婁笉璞″嚱鏁拌皟鐢ㄦ椂閭d箞澶э紝鍙瀹冩槸浠ョ洰鏍囦唬鐮佺殑澧炲姞涓轟唬浠鋒潵鎹㈠彇鏃墮棿鐨勮妭鐪併?br>鍦ㄧ被闈欐佹暟鎹垚鍛樹笉鍚屼簬闈為潤鎬佺殑鏁版嵁鎴愬憳錛屼竴涓被鐨勯潤鎬佹暟鎹垚鍛樹粎鍒涘緩鍜屽垵濮嬪寲涓嬈★紝涓斿湪紼嬪簭寮濮嬫墽琛岀殑鏃跺欏垱寤猴紝鐒跺悗琚綾葷殑鎵鏈夊璞″叡浜紱鑰岄潪闈欐佺殑鏁版嵁鎴愬憳鍒欓殢鐫瀵硅薄鐨勫垱寤鴻屽嬈″垱寤哄拰鍒濆鍖? static鎴愬憳鏄斁鍦ㄩ潤鎬佸瓨鍌ㄥ尯鐨勶紝瀹冨茍涓嶅彈璁塊棶鎺у埗絎︾殑闄愬埗錛岃屽叾瀹冪殑鎴愬憳鍙橀噺鍒欐槸鏀懼湪鏍堜腑鐨勩?br><br><strong>浜屻佷嬌鐢ㄦ柟闈?/strong><br><br>1錛歸indows鐨勫洖璋冨嚱鏁頒嬌鐢ㄩ潤鎬佸嚱鏁幫細(xì)<br><br>鍦ㄧ被涓紝static鍨嬬殑鎴愬憳鍑芥暟錛岀敱浜庢槸綾繪墍鎷ユ湁鐨勶紝鑰屼笉鏄叿浣撳璞℃墍鏈夌殑錛岃繖涓鐐瑰浜巜indows鐨勫洖璋冩満鍒墮潪甯告湁鐢ㄣ傚洜涓哄浜庡洖璋冨嚱鏁拌岃█錛寃indows涓嶄細(xì)鍊熷姪浠諱綍瀵硅薄鍘昏皟鐢ㄥ畠錛屼篃灝變笉浼?xì)浼犻抰his鎸囬拡錛岄偅涔堝浜庝竴鑸垚鍛樺嚱鏁頒綔涓哄洖璋冨嚱鏁扮殑鍚庢灉錛屽氨鏄爢鏍堜腑鏈変竴涓殢鏈虹殑鍙橀噺浼?xì)鎴愪负this鎸囬拡錛岃繖褰撶劧浼?xì)寮曞彂绋嬪簭鐨勫穿婧冦傝宻tatic鍑芥暟錛岀敱浜庢槸鏁翠釜綾葷殑錛屽睆钄戒簡this鎸囬拡銆傚洜姝わ紝濡傛灉鎴愬憳鍑芥暟浣滀負(fù)鍥炶皟鍑芥暟錛屽氨搴旇鐢╯tatic鍘諱慨楗板畠銆?br><br>2錛氱嚎紼嬫帶鍒跺嚱鏁板父浣跨敤闈欐佸嚱鏁?br>闈欐佸嚱鏁版湁鐗瑰畾鐨勫湴鍧絀洪棿錛岃繖鏍峰彲浠ラ伩鍏嶅湪榪愯鏃秙ystem瀵瑰唴瀛樿皟鏁村甫鏉ョ殑闂銆?br><br>3錛歐indows緋葷粺API錛屼篃甯鎬嬌鐢ㄩ潤鎬佸嚱鏁?br><br>璋冪敤鏂歸潰錛屼笉鐢ㄥ湪璋冪敤鍓嶅疄渚嬪寲銆?br><br><strong>涓夈佸疄渚嬩唬鐮?br></strong></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 src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include </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://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">windows.h</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">.h</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> Directory<br><img id=Codehighlighter1_96_437_Open_Image onclick="this.style.display='none'; Codehighlighter1_96_437_Open_Text.style.display='none'; Codehighlighter1_96_437_Closed_Image.style.display='inline'; Codehighlighter1_96_437_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_96_437_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_96_437_Closed_Text.style.display='none'; Codehighlighter1_96_437_Open_Image.style.display='inline'; Codehighlighter1_96_437_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_96_437_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://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_96_437_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 闈欐佸叕鏈夌殑鍑芥暟</span><span style="COLOR: #008000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">      Directory()<br><img id=Codehighlighter1_147_206_Open_Image onclick="this.style.display='none'; Codehighlighter1_147_206_Open_Text.style.display='none'; Codehighlighter1_147_206_Closed_Image.style.display='inline'; Codehighlighter1_147_206_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_147_206_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_147_206_Closed_Text.style.display='none'; Codehighlighter1_147_206_Open_Image.style.display='inline'; Codehighlighter1_147_206_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>      </span><span id=Codehighlighter1_147_206_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://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_147_206_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>           strcpy(strTemp,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/嫻嬭瘯</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>           i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">15</span><span style="COLOR: #000000">;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>      }</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> setpath(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">newpath);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> setname( Directory </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">dir);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> getpath(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">oldpath);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> strTemp [</span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">];<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">闈欐佸瓧絎︿覆</span><span style="COLOR: #008000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">      </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> path [];<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top> <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">闈欐佹暟鎹垚鍛樼殑鍒濆鍖?/span><span style="COLOR: #008000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> Directory::path [</span><span style="COLOR: #000000">199</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/寮濮嬫祴璇?/span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top> <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 闈欐佸嚱鏁拌闂潤鎬佸彉閲?/span><span style="COLOR: #008000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> Directory::setpath(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">newpath)<br><img id=Codehighlighter1_554_657_Open_Image onclick="this.style.display='none'; Codehighlighter1_554_657_Open_Text.style.display='none'; Codehighlighter1_554_657_Closed_Image.style.display='inline'; Codehighlighter1_554_657_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_554_657_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_554_657_Closed_Text.style.display='none'; Codehighlighter1_554_657_Open_Image.style.display='inline'; Codehighlighter1_554_657_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_554_657_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://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_554_657_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">path=%s\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,path);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      strncpy(path, newpath, </span><span style="COLOR: #000000">199</span><span style="COLOR: #000000">);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">path=%s\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,path);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"> <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">闈欐佸嚱鏁拌闂潪闈欐佸彉閲?/span><span style="COLOR: #008000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> Directory::setname(Directory </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">dir)<br><img id=Codehighlighter1_714_797_Open_Image onclick="this.style.display='none'; Codehighlighter1_714_797_Open_Text.style.display='none'; Codehighlighter1_714_797_Closed_Image.style.display='inline'; Codehighlighter1_714_797_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_714_797_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_714_797_Closed_Text.style.display='none'; Codehighlighter1_714_797_Open_Image.style.display='inline'; Codehighlighter1_714_797_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_714_797_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://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_714_797_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      dir</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">getpath(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/闈欐佸嚱鏁拌闂潪闈欐佸嚱鏁?/span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    dir</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">strTemp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">闈欐佸嚱鏁拌闂潪闈欐佸彉閲?/span><span style="COLOR: #008000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">      </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 闈為潤鎬佸嚱鏁拌闂潤鎬佸彉閲?/span><span style="COLOR: #008000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> Directory::getpath(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">oldpath)<br><img id=Codehighlighter1_853_958_Open_Image onclick="this.style.display='none'; Codehighlighter1_853_958_Open_Text.style.display='none'; Codehighlighter1_853_958_Closed_Image.style.display='inline'; Codehighlighter1_853_958_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_853_958_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_853_958_Closed_Text.style.display='none'; Codehighlighter1_853_958_Open_Image.style.display='inline'; Codehighlighter1_853_958_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_853_958_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://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_853_958_Open_Text><span style="COLOR: #000000">{   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      strncpy(Directory::path,oldpath, </span><span style="COLOR: #000000">199</span><span style="COLOR: #000000">);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Directory::path=%s\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,Directory::path);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"> <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top> <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 浣跨敤瀹炰緥</span><span style="COLOR: #008000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> main()<br><img id=Codehighlighter1_983_1244_Open_Image onclick="this.style.display='none'; Codehighlighter1_983_1244_Open_Text.style.display='none'; Codehighlighter1_983_1244_Closed_Image.style.display='inline'; Codehighlighter1_983_1244_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_983_1244_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_983_1244_Closed_Text.style.display='none'; Codehighlighter1_983_1244_Open_Image.style.display='inline'; Codehighlighter1_983_1244_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_983_1244_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://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_983_1244_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 閫氳繃綾誨悕璋冪敤setpath()鎴愬憳鍑芥暟<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Directory::setpath("/閫氳繃綾誨悕璋冪敤闈欐佹垚鍛樺嚱鏁?);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">閫氳繃瀵硅薄璋冪敤setpath()鎴愬憳鍑芥暟</span><span style="COLOR: #008000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">      Directory dir;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      dir.setpath(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/闈欐佸嚱鏁拌闂潤鎬佸彉閲?/span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      dir.getpath(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/闈為潤鎬佸嚱鏁拌闂潤鎬佸彉閲?/span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      Directory </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">dira;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      dir.setname(dira);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>      <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span></div> <p><br>鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/shuigsls/archive/2008/07/13/2645918.aspx</a></p> <img src ="http://m.shnenglu.com/finehai/aggbug/94767.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/finehai/" target="_blank">Bluesea</a> 2009-08-29 16:04 <a href="http://m.shnenglu.com/finehai/archive/2009/08/29/94767.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>濡備綍瀹炵幇綾葷殑鎴愬憳鍑芥暟浣滀負(fù)鍥炶皟鍑芥暟http://m.shnenglu.com/finehai/archive/2009/08/29/94766.htmlBlueseaBlueseaSat, 29 Aug 2009 07:45:00 GMThttp://m.shnenglu.com/finehai/archive/2009/08/29/94766.htmlhttp://m.shnenglu.com/finehai/comments/94766.htmlhttp://m.shnenglu.com/finehai/archive/2009/08/29/94766.html#Feedback0http://m.shnenglu.com/finehai/comments/commentRss/94766.htmlhttp://m.shnenglu.com/finehai/services/trackbacks/94766.html鍥炶皟鍑芥暟(Callback   function)澶ч噺鐢ㄤ簬Windows鐨勭郴緇熸湇鍔★紝閫氳繃瀹冿紝紼嬪簭鍛樺彲浠ュ畨瑁呰澶囬┍鍔ㄧ▼搴忓拰娑堟伅榪囨護(hù)緋葷粺錛屼互鎺у埗Windows鐨勬湁鏁堜嬌鐢ㄣ傝澶氱▼搴忓憳閮藉彂鐜幫紝鍒╃敤MFC鎴栬呭叾瀹冪殑C++搴旂敤緙栧啓鍥炶皟鍑芥暟鏄潪甯擱夯鐑︾殑錛屽叾鏍規(guī)湰鍘熷洜鏄洖璋冨嚱鏁版槸鍩轟簬C緙栫▼鐨刉indows   SDK鐨勬妧鏈紝涓嶆槸閽堝C++鐨勶紝紼嬪簭鍛樺彲浠ュ皢涓涓狢鍑芥暟鐩存帴浣滀負(fù)鍥炶皟鍑芥暟錛屼絾鏄鏋滆瘯鍥劇洿鎺ヤ嬌鐢–++鐨勬垚鍛樺嚱鏁頒綔涓哄洖璋冨嚱鏁板皢鍙戠敓閿欒錛岀敋鑷崇紪璇戝氨涓嶈兘閫氳繃銆傞氳繃鏌ヨ璧勬枡鍙戠幇錛屽叾閿欒鏄櫘閫氱殑C++鎴愬憳鍑芥暟閮介殣鍚簡涓涓紶閫掑嚱鏁頒綔涓哄弬鏁幫紝浜﹀嵆“this”鎸囬拡錛孋++閫氳繃浼犻掍竴涓寚鍚戣嚜韜殑鎸囬拡緇欏叾鎴愬憳鍑芥暟浠庤屽疄鐜扮▼搴忓嚱鏁板彲浠ヨ闂瓹++鐨勬暟鎹垚鍛樸傝繖涔熷彲浠ョ悊瑙d負(fù)浠涔圕++綾葷殑澶氫釜瀹炰緥鍙互鍏變韓鎴愬憳鍑芥暟浣嗘槸紜湁涓嶅悓鐨勬暟鎹垚鍛樸傜敱浜巘his鎸囬拡鐨勪綔鐢紝浣垮緱灝嗕竴涓狢ALLBACK鍨嬬殑鎴愬憳鍑芥暟浣滀負(fù)鍥炶皟鍑芥暟瀹夎鏃跺氨浼?xì)鍥犱负闅愬惈鐨則his鎸囬拡浣垮緱鍑芥暟鍙傛暟涓暟涓嶅尮閰嶏紝浠庤屽鑷村洖璋冨嚱鏁板畨瑁呭け璐ャ傝瑙e喅榪欎竴闂鐨勫叧閿氨鏄笉璁﹖his鎸囬拡璧蜂綔鐢紝閫氳繃閲囩敤浠ヤ笅涓ょ鍏稿瀷鎶鏈彲浠ヨВ鍐沖湪C++涓嬌鐢ㄥ洖璋冨嚱鏁版墍閬囧埌鐨勯棶棰樸傝繖縐嶆柟娉曞叿鏈夐氱敤鎬э紝閫傚悎浜庝換浣旵++銆?nbsp; 
   
  銆銆1).   涓嶄嬌鐢ㄦ垚鍛樺嚱鏁幫紝鐩存帴浣跨敤鏅欳鍑芥暟錛屼負(fù)浜嗗疄鐜板湪C鍑芥暟涓彲浠ヨ闂被鐨勬垚鍛樺彉閲忥紝鍙互浣跨敤鍙嬪厓鎿嶄綔絎?friend)錛屽湪C++涓皢璇鍑芥暟璇存槑涓虹被鐨勫弸鍏冨嵆鍙傝繖縐嶅鐞嗘満鍒朵笌鏅氱殑C緙栫▼涓嬌鐢ㄥ洖璋冨嚱鏁頒竴鏍楓?nbsp; 
   
  銆銆2).   浣跨敤闈欐佹垚鍛樺嚱鏁幫紝闈欐佹垚鍛樺嚱鏁頒笉浣跨敤this鎸囬拡浣滀負(fù)闅愬惈鍙傛暟錛岃繖鏍峰氨鍙互浣滀負(fù)鍥炶皟鍑芥暟浜嗐傞潤鎬佹垚鍛樺嚱鏁板叿鏈変袱澶х壒鐐癸細(xì)鍏朵竴錛屽彲浠ュ湪娌℃湁綾誨疄渚嬬殑鎯呭喌涓嬩嬌鐢紱鍏朵簩錛屽彧鑳借闂潤鎬佹垚鍛樺彉閲忓拰闈欐佹垚鍛樺嚱鏁幫紝涓嶈兘璁塊棶闈為潤鎬佹垚鍛樺彉閲忓拰闈為潤鎬佹垚鍛樺嚱鏁般傜敱浜庡湪C++涓嬌鐢ㄧ被鎴愬憳鍑芥暟浣滀負(fù)鍥炶皟鍑芥暟鐨勭洰鐨勫氨鏄負(fù)浜嗚闂墍鏈夌殑鎴愬憳鍙橀噺鍜屾垚鍛樺嚱鏁幫紝濡傛灉浣滀笉鍒拌繖涓鐐瑰皢涓嶅叿鏈夊疄闄呮剰涔夈傝В鍐崇殑鍔炴硶涔熷緢綆鍗曪紝灝辨槸浣跨敤涓涓潤鎬佺被鎸囬拡浣滀負(fù)綾繪垚鍛橈紝閫氳繃鍦ㄧ被鍒涘緩鏃跺垵濮嬪寲璇ラ潤鎬佹寚閽堬紝濡俻This=this錛岀劧鍚庡湪鍥炶皟鍑芥暟涓氳繃璇ラ潤鎬佹寚閽堝氨鍙互璁塊棶鎵鏈夋垚鍛樺彉閲忓拰鎴愬憳鍑芥暟浜嗐傝繖縐嶅鐞嗗姙娉曢傜敤浜庡彧鏈変竴涓被瀹炰緥鐨勬儏鍐碉紝鍥犱負(fù)澶氫釜綾誨疄渚嬪皢鍏變韓闈欐佺被鎴愬憳鍜岄潤鎬佹垚鍛樺嚱鏁幫紝榪欏氨瀵艱嚧闈欐佹寚閽堟寚鍚戞渶鍚庡垱寤虹殑綾誨疄渚嬨備負(fù)浜嗛伩鍏嶈繖縐嶆儏鍐碉紝鍙互浣跨敤鍥炶皟鍑芥暟鐨勪竴涓弬鏁版潵浼犻抰his鎸囬拡錛屼粠鑰屽疄鐜版暟鎹垚鍛樺叡浜?a >



Bluesea 2009-08-29 15:45 鍙戣〃璇勮
]]>
[杞琞涓寸晫鍖?浜掓枼,淇″彿閲?/title><link>http://m.shnenglu.com/finehai/archive/2009/08/19/93770.html</link><dc:creator>Bluesea</dc:creator><author>Bluesea</author><pubDate>Wed, 19 Aug 2009 01:37:00 GMT</pubDate><guid>http://m.shnenglu.com/finehai/archive/2009/08/19/93770.html</guid><wfw:comment>http://m.shnenglu.com/finehai/comments/93770.html</wfw:comment><comments>http://m.shnenglu.com/finehai/archive/2009/08/19/93770.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/finehai/comments/commentRss/93770.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/finehai/services/trackbacks/93770.html</trackback:ping><description><![CDATA[<p><strong><span style="COLOR: #cc99ff">涓寸晫鍖猴紙criticalSection錛?/span></strong> <br><br>鍙堢О闃誨錛屽畠鑳藉浣夸竴孌典唬鐮佸彧鐢變竴涓嚎紼嬫潵鎵ц錛屽叾瀹冪嚎紼嬭鎸″湪榪欐浠g爜涔嬪錛岀洿鍒扮涓涓嚎紼嬫墽琛屽畬浠g爜銆備復(fù)鐣屽尯鐨勪嬌鐢ㄤ富瑕佹秹鍙?qiáng)濡備笅API鍑芥暟錛?<br>initializeCriticalSection(), 鍦ㄤ復(fù)鐣屽尯棣栨浣跨敤涔嬪墠錛岀敤姝ゅ嚱鏁拌繘琛屽垵濮嬪寲銆?<br>deleteCreticalSection(), 鍦ㄤ復(fù)鐣屽尯涓嶅啀浣跨敤涔嬪墠錛岀敤姝ゅ嚱鏁伴噴鏀句復(fù)鐣屽尯銆?<br>enterCriticalSection(), 鍦ㄥ垵濮嬪寲涔嬪悗錛岀敤姝ゅ嚱鏁拌繘鍏ラ樆濉炪?<br>leaveCriticalSection(), 鍦ㄤ唬鐮佹墽琛屽畬涔嬪悗錛岀敤姝ゅ嚱鏁拌В闄ら樆濉炪?</p> <p><strong><span style="COLOR: #cc99ff">浜掓枼錛坢utex錛?/span> <br></strong><br>浜掓枼姣旇緝綾諱技闃誨錛屽叧閿湪浜庝簰鏂ュ彲浠ヨ法榪涚▼鐨勭嚎紼嬪悓姝ワ紝寰堝鍙厑璁稿簲鐢ㄧ▼搴忚繍琛屼竴嬈$殑瀹炰緥灝辨槸鐢ㄤ簰鏂ユ柟娉曟潵瀹炵幇鐨勩備簰鏂ョ敤鍒頒互涓嬬殑API鍑芥暟錛?<br>createMutex(), 鍒涘緩浜掓枼瀵硅薄銆?<br>releaseMutex(), 瑙i櫎浜掓枼鍏崇郴銆?</p> <p>浜掓枼鐨勪竴鑸嬌鐢ㄦ祦紼嬶細(xì) <br>棣栧厛createMutex鍒涘緩浜掓枼瀵硅薄錛岀劧鍚巜aitForSingleObject榪涘叆浜掓枼鐜錛屽綋鐢ㄥ埌鍚屾鐨勪唬鐮佹墽琛屽畬鎴愬悗錛岀敤releaseMutex瑙i櫎浜掓枼鍏崇郴錛屽綋鎵鏈夌嚎紼嬭闂畬鍚庯紝璋冪敤 <br>closeHandle鏂規(guī)硶閲婃斁浜掓枼瀵硅薄銆?</p> <p>waitForSingleObject()鍑芥暟鏉ラ槻姝㈠叾瀹冪嚎紼嬭繘鍏ュ悓姝ュ尯鍩熺殑浠g爜銆?<br>function waitforsingleobject(hHandle: Thandle; dwMilliseconds: DWORD):   DWORD; stdcall; <br>榪欎釜鍑芥暟鍙互浣垮綋鍓嶇嚎紼嬪湪dwmilliseconds鎸囧畾鐨勬椂闂村唴鐫$湢錛岀洿鍒癶Handle鍙傛暟鎸囧畾鐨勫璞¤繘鍏ュ彂淇″彿鐘舵佷負(fù)姝€備竴涓簰鏂ュ璞′笉鍐嶈綰跨▼鎷ユ湁鏃訛紝瀹冨氨榪涘叆鍙戜俊鍙風(fēng)姸鎬?<br>褰撲竴涓繘紼嬭緇堟鏃訛紝瀹冨氨榪涘叆鍙戜俊鍙風(fēng)姸鎬併俤wmilliseconds鍙傛暟鍙互璁句負(fù)0錛岃繖鎰忓懗鐫鍙鏌handle鍙傛暟鎸囧畾鐨勫璞℃槸鍚﹀鐞嗗彂淇″彿鐘舵侊紝鑰屽悗绔嬪嵆榪斿洖銆俤wmilliseconds鍙傛暟璁句負(fù)INFINITE錛岃〃紺哄鏋滀俊鍙蜂笉鍑虹幇灝嗕竴鐩寸瓑涓嬪幓銆?</p> <p>waitForSingeObject()浣跨敤鐨勮繑鍥炲煎強(qiáng)鍏跺惈涔夛細(xì) <br>WAIT ABANDONED <br>鎸囧畾鐨勫璞℃槸浜掓枼瀵硅薄錛屽茍涓旀嫢鏈夎繖涓簰鏂ュ璞$殑綰跨▼鍦ㄦ病鏈夐噴鏀炬瀵硅薄涔嬪墠灝卞凡緇堟銆傛鏃跺氨縐頒簰鏂ュ璞¤鎶涘純銆傝繖縐嶆儏鍐典笅錛岃繖涓簰鏂ュ璞″綊褰撳墠綰跨▼鎵鏈夛紝騫舵妸瀹冭涓轟笉鍙戜俊鍙風(fēng)姸鎬併?<br>WAIT OBJECT 0 <br>鎸囧畾鐨勫璞″浜庡彂淇″彿鐘舵?<br>WAIT TIMEOUT <br>絳夊緟鐨勬椂闂村凡榪囷紝瀵硅薄浠嶇劧鏄潪鍙戜俊鍙風(fēng)姸鎬?</p> <p>褰撲竴涓簰鏂ュ璞′笉鍐嶈涓涓嚎紼嬫墍鎷ユ湁錛屽畠?yōu)澶勪簬鍙戜俊鍙风姸鎬併傛鏃墮鍏堣皟鐢╳aitForsingleobject()鐨勭嚎紼嬪氨鎴愪負(fù)璇ヤ簰鏂ュ璞$殑鎷ユ湁鑰咃紝姝や簰鏂ュ璞¤涓轟笉鍙戜俊鍙風(fēng)姸鎬併傚綋綰跨▼璋冪敤releaseMutex()騫朵紶閫掍竴涓簰鏂ュ璞$殑鍙ユ焺浣滀負(fù)鍙傛暟鏃訛紝榪欑鎷ユ湁鍏崇郴灝辮瑙i櫎錛屼簰鏂ュ璞¢噸鏂拌繘鍏ュ彂淇″彿鐘舵併傞櫎waitforsingleobject()澶栵紝榪樺彲浠ヤ嬌鐢╳aitformultipleobject()鍜宮sgwaitformultipleobject()錛屽畠浠彲浠ョ瓑寰呭嚑涓璞″彉涓哄彂淇″彿鐘舵併?<br></p> <p><span style="COLOR: #cc99ff">淇″彿閲忥紙semaphore錛?/span> </p> <p>鍙︿竴縐嶄嬌綰跨▼鍚屾鐨勬妧鏈槸浣跨敤淇″彿閲忓璞°傚畠鏄湪浜掓枼鐨勫熀紜涓婂緩绔嬬殑銆備絾淇″彿閲忓鍔犱簡璧勬簮璁℃暟鐨勫姛鑳斤紝棰勫畾鏁扮洰鐨勭嚎紼嬪厑璁稿悓鏃惰繘鍏ヨ鍚屾鐨勪唬鐮併傜敤<br>createSemaphore()鏉ュ垱寤轟竴涓俊鍙烽噺瀵硅薄錛屽叾澹版槑濡備笅錛?<br><br>function createsemaphore(lpSemaphoreAttributes: pSecurityAttributes; </p> <p>lInitalCount, lMaximunCount: longint; lpName: pchar): Thandle; stdcall; <br><br>鍜宑reatemutex()涓鏍鳳紝createsemaphore()鐨勭涓涓弬鏁頒篃鏄竴涓寚鍚慣securityAttributes璁板綍鐨勬寚閽堬紝姝ゅ弬鏁扮殑緙哄皯鍊煎彲浠ヨ涓簄il銆俵Initialcount鍙傛暟鐢ㄦ潵鎸囧畾涓俊鍙烽噺鐨勫垵濮嬭鏁?br>鍊鹼紝榪欎釜鍊煎繀欏誨湪0鍜宭Maximumcount涔嬮棿銆傛鍙傛暟澶т簬0 錛屽氨琛ㄧず淇″彿閲忓浜庡彂淇″彿鐘舵併傚綋璋冪敤waitforsingleobject()鏃訛紝姝よ鏁板煎氨鍑?銆傚綋璋冪敤releasesemaphore()鏃訛紝姝よ鏁板煎姞1銆傚弬鏁發(fā)Maximumcount鎸囧畾璁℃暟鍊肩殑鏈澶у箋傚鏋滆繖涓俊鍙烽噺浠h〃鏌愮璧勬簮錛岄偅涔堣繖涓間唬琛ㄥ彲鐢ㄨ祫婧愭繪暟銆傚弬鏁發(fā)pName鐢ㄤ簬緇欏嚭淇″彿閲忓璞$殑鍚嶇О銆傜被浼間簬createmutex()鐨刲pName鍙傛暟銆?<br><br>releaseSemaphore()鐨勫0鏄庯細(xì) <br><br>function releaseSemaphore(hsemaphore: Thandle; lreleasecount: longint; <br>lppreviouscount: pointer): bool; stdcall; <br><br>ireleasecount鍙傛暟鐢ㄤ簬鎸囧畾姣忔浣胯鏁板煎姞澶氬皯銆傚鏋滃弬鏁發(fā)ppreviouscount涓嶄負(fù)nil錛屽師鏈夌殑璁℃暟鍊煎皢瀛樺偍鍦╨ppreviouscount閲屻備俊鍙烽噺瀵硅薄騫朵笉灞炰簬鏌愪釜綰跨▼銆傝浣忥紝鏈鍚庝竴瀹氳璋冪敤colsehandle()鏉ラ噴鏀劇敱createsemaphore()鍒涘緩鐨勪俊鍙烽噺瀵硅薄鐨勫彞鏌勩?/p> <img src ="http://m.shnenglu.com/finehai/aggbug/93770.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/finehai/" target="_blank">Bluesea</a> 2009-08-19 09:37 <a href="http://m.shnenglu.com/finehai/archive/2009/08/19/93770.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[c++]heap corruption detectedhttp://m.shnenglu.com/finehai/archive/2009/08/05/92296.htmlBlueseaBlueseaWed, 05 Aug 2009 08:04:00 GMThttp://m.shnenglu.com/finehai/archive/2009/08/05/92296.htmlhttp://m.shnenglu.com/finehai/comments/92296.htmlhttp://m.shnenglu.com/finehai/archive/2009/08/05/92296.html#Feedback0http://m.shnenglu.com/finehai/comments/commentRss/92296.htmlhttp://m.shnenglu.com/finehai/services/trackbacks/92296.html鏈榪戝湪寮曠敤鍒漢鎻愪緵鐨勪竴涓被鏃訛紝

CSTI* ocsti = new CSTI();
delete ocsti; 
//紼嬪簭宕╂帀


鍑虹幇濡備笅閿欒錛?br>


緇忔煡鎵撅紝鍙戠幇榪欐槸鍏稿瀷鐨勫唴瀛樻孩鍑洪敊璇?甯稿湪鍐呭瓨鐨刣elete澶勫彂鐢?鑰屼笖涓鑸湪debug鐗堟湰涓彲鑳藉嚭鐜?release鐗堟湰涓彲鑳藉茍涓嶆姤閿?

鍑虹幇榪欎釜閿欒鐨勫師鍥犱竴鑸兘鏄搷浣渘ew鐢寵鐨勫唴瀛樻孩鍑?鍥犱負(fù)鍦╟++涓?濡傛灉鐢╪ew鍒嗛厤涓孌靛唴瀛?鎿嶄綔鐨勬椂鍊欐敼鍙樹簡璇ラ儴鍒嗙殑澶у皬,鍦╠elete鏃跺氨浼?xì)鍑洪?姣斿璇村涓嬮儴鍒?

char* p=new char[5];
strcpy(p,
"aaaaa");
delete[] p;


榪欐浠g爜灝變細(xì)鍑洪敊,鍥犱負(fù)鐢寵浜嗕竴涓猻ize涓?鐨勫唴瀛?浣嗘槸strcpy榪囧幓浜嗕竴涓猻ize涓?鐨勫瓧絎︿覆,鍥犳鐮村潖浜嗚繖涓寚閽?榪愯debug鐗堟湰鐨勬椂鍊?灝變細(xì)鍑虹幇鍏堝墠鐨勯敊璇?浣嗘槸鍦╮elease鐗堟湰涓?婧㈠嚭涓涓瓧鑺傜殑鍐呭瓨寰堟湁鍙兘鏄病鏈夐敊璇殑,鐒跺悗娼滃湪鐨勯殣鎮(zhèn)f槸鑲畾瀛樺湪鐨?鍥犳,鎴戜滑鍦╠ebug閬囧埌榪欐牱鐨勯敊璇椂鍊欎竴瀹氳浠旂粏媯鏌ュnew鍑虹殑鎸囬拡鐨勬搷浣?

鑰屾垜騫舵湭瀵圭敵璇風(fēng)殑鍐呭瓨鍋氫換浣曟搷浣滃氨鎶ュ唴瀛樻孩鍑虹殑閿欒錛岄偅涔堝彲鑳藉氨鏄洜涓簄ew鏃剁敵璇風(fēng)殑鍐呭瓨澶皬錛屾渶鍚庣粡楠岃瘉鍙戠幇鏄洜涓虹敤鐨勬棫鐨勫ご鏂囦歡寮曡搗鐨勯敊璇紝鍚庢潵鎹㈡柊鐨勫ご鏂囦歡鍚庡氨涓嶅湪鎶ラ敊浜嗐傛垜璇曠潃鎶婃柊銆佹棫澶存枃浠剁敵璇風(fēng)殑鍐呭瓨澶у皬鎵撳嚭鏉ユ瘮杈冿紝鍙戠幇鏂扮殑澶存枃浠舵灉鐒舵瘮鏃х殑鍐呭瓨瑕佸ぇ銆?br>
榪欐槸鍦ㄧ敤鍒漢鎻愪緵鐨勫簱鏃墮亣鍒扮殑闂錛屾墍浠ュ湪鎻愪緵鍒漢搴撴椂瑕佺湅鐪嬪ご鏂囦歡鏄惁涔熸湁鏇存柊銆?/p>

Bluesea 2009-08-05 16:04 鍙戣〃璇勮
]]>
C++涓潤鎬佹垚鍛樺嚱鏁拌闂潪闈欐佹垚鍛樺彉閲?/title><link>http://m.shnenglu.com/finehai/archive/2009/07/23/90887.html</link><dc:creator>Bluesea</dc:creator><author>Bluesea</author><pubDate>Thu, 23 Jul 2009 01:40:00 GMT</pubDate><guid>http://m.shnenglu.com/finehai/archive/2009/07/23/90887.html</guid><wfw:comment>http://m.shnenglu.com/finehai/comments/90887.html</wfw:comment><comments>http://m.shnenglu.com/finehai/archive/2009/07/23/90887.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/finehai/comments/commentRss/90887.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/finehai/services/trackbacks/90887.html</trackback:ping><description><![CDATA[鍏堢湅涓涓猚lass <br><br> <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://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> a<br><img id=Codehighlighter1_8_88_Open_Image onclick="this.style.display='none'; Codehighlighter1_8_88_Open_Text.style.display='none'; Codehighlighter1_8_88_Closed_Image.style.display='inline'; Codehighlighter1_8_88_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_8_88_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_8_88_Closed_Text.style.display='none'; Codehighlighter1_8_88_Open_Image.style.display='inline'; Codehighlighter1_8_88_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_8_88_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://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_8_88_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>  </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> FunctionA()<br><img id=Codehighlighter1_41_62_Open_Image onclick="this.style.display='none'; Codehighlighter1_41_62_Open_Text.style.display='none'; Codehighlighter1_41_62_Closed_Image.style.display='inline'; Codehighlighter1_41_62_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_41_62_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_41_62_Closed_Text.style.display='none'; Codehighlighter1_41_62_Open_Image.style.display='inline'; Codehighlighter1_41_62_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>  </span><span id=Codehighlighter1_41_62_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://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_41_62_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>     menber </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>  }</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>  </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> menber;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div> <br> <p>緙栬瘧涓婅堪浠g爜錛屽嚭閿欍傚師鍥犲緢綆鍗曞ぇ瀹墮兘鐭ラ亾錛岄潤鎬佹垚鍛樺嚱鏁頒笉鑳借闂潪闈欐佹垚鍛橈紝榪欐槸鍥犱負(fù)闈欐佸嚱鏁板睘浜庣被鑰屼笉鏄睘浜庢暣涓璞★紝闈欐佸嚱鏁頒腑鐨?member鍙兘閮芥病鏈夊垎閰嶅唴瀛樸傞潤鎬佹垚鍛樺嚱鏁版病鏈夐殣鍚殑this鑷彉閲忋傛墍浠ワ紝瀹冨氨鏃犳硶璁塊棶鑷繁綾葷殑闈為潤鎬佹垚鍛樸傦紙鐪嬭繃涓綃囧緢濂界殑鏂囩珷<a ><font color=#000000>銆婃祬鏋怌++涓殑this鎸囬拡銆?/font></a>浠嬬粛榪欎釜鏂歸潰鐨勮緇嗗唴瀹癸級</p> <p>閭h鎯寵闂庝箞鍔炲憿錛熷湴鐞冧漢閮界煡閬撳彧瑕佸皢錛?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 src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> menber;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">change the line above to:</span><span style="COLOR: #008000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> menber;</span></div> <br>浣嗘槸榪欎釜鏂規(guī)硶璁╂垜浠笉寰椾笉灝唖tatic function鍐呯敤鍒扮殑鎴愬憳鍙橀噺閮藉彉鎴恠tatic鐨勪簡錛岃屼笖static鐨勬垚鍛樿繕瑕佹樉寮忓垵濮嬪寲錛屾湁娌℃湁鏇村ソ鐨勬柟娉曪紵絳旀鏄偗瀹氱殑銆傚涓嬶細(xì)<br><br> <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://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> a<br><img id=Codehighlighter1_8_96_Open_Image onclick="this.style.display='none'; Codehighlighter1_8_96_Open_Text.style.display='none'; Codehighlighter1_8_96_Closed_Image.style.display='inline'; Codehighlighter1_8_96_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_8_96_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_8_96_Closed_Text.style.display='none'; Codehighlighter1_8_96_Open_Image.style.display='inline'; Codehighlighter1_8_96_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_8_96_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://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_8_96_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>  </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> FunctionA(a</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> _a)<br><img id=Codehighlighter1_46_70_Open_Image onclick="this.style.display='none'; Codehighlighter1_46_70_Open_Text.style.display='none'; Codehighlighter1_46_70_Closed_Image.style.display='inline'; Codehighlighter1_46_70_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_46_70_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_46_70_Closed_Text.style.display='none'; Codehighlighter1_46_70_Open_Image.style.display='inline'; Codehighlighter1_46_70_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>  </span><span id=Codehighlighter1_46_70_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://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_46_70_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    a</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000"> menber </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>  }</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>  </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> menber;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div> <br>鍓嶆彁鏄繖涓被瑕佸垎閰嶄簡鍐呭瓨絀洪棿銆傚叾瀹炶繖閲屾垜鍋氱殑灝辨槸灝嗕竴涓璞℃寚閽堜綔涓洪潤鎬佹垚鍛樺嚱鏁扮殑“this”鎸囬拡錛屾剰鍦ㄦā浠夸紶閫掗潪闈欐佹垚鍛樺嚱鏁伴噷this鍙橀噺銆? <img src ="http://m.shnenglu.com/finehai/aggbug/90887.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/finehai/" target="_blank">Bluesea</a> 2009-07-23 09:40 <a href="http://m.shnenglu.com/finehai/archive/2009/07/23/90887.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>CreateMutex鍒╃敤浜掓枼瀵硅薄瀹炵幇綰跨▼鍚屾瀹炰緥 http://m.shnenglu.com/finehai/archive/2009/07/21/90746.htmlBlueseaBlueseaTue, 21 Jul 2009 09:06:00 GMThttp://m.shnenglu.com/finehai/archive/2009/07/21/90746.htmlhttp://m.shnenglu.com/finehai/comments/90746.htmlhttp://m.shnenglu.com/finehai/archive/2009/07/21/90746.html#Feedback1http://m.shnenglu.com/finehai/comments/commentRss/90746.htmlhttp://m.shnenglu.com/finehai/services/trackbacks/90746.html
#include <windows.h>
#include 
<iostream.h>

DWORD WINAPI Fun1Proc(LPVOID lpParameter);
DWORD WINAPI Fun2Proc(LPVOID lpParameter);

int index=0;
int tickets=100;
HANDLE hMutex;
void main()
{
    HANDLE hThread1,hThread2;
    hThread1
=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
    hThread2
=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);
    CloseHandle(hThread1);
    CloseHandle(hThread2);
    
    hMutex
=CreateMutex(NULL,FALSE,NULL);
    
//TRUE浠h〃涓葷嚎紼嬫嫢鏈変簰鏂ュ璞?nbsp;浣嗘槸涓葷嚎紼嬫病鏈夐噴鏀捐瀵硅薄  浜掓枼瀵硅薄璋佹嫢鏈?nbsp;璋侀噴鏀?br>    //FLASE浠h〃褰撳墠娌℃湁綰跨▼鎷ユ湁榪欎釜浜掓枼瀵硅薄

    Sleep(
4000);

}


DWORD WINAPI Fun1Proc(LPVOID lpParameter)
{
    
while (true)
    
{
        WaitForSingleObject(hMutex,INFINITE);
        
if (tickets>0)
        
{
            cout
<<"t1: "<<tickets--<<endl;
        
        }

        
else
        
{
            
break;
        }

        ReleaseMutex(hMutex);
    }


    
return 0;
}


DWORD WINAPI Fun2Proc(LPVOID lpParameter)
{
    
while (true)
    
{
        WaitForSingleObject(hMutex,INFINITE);
        
if (tickets>0)
        
{
            cout
<<"t2: "<<tickets--<<endl;
        }

        
else
        
{
            
break;
        }

        ReleaseMutex(hMutex);
    }


    
return 0;
}




Bluesea 2009-07-21 17:06 鍙戣〃璇勮
]]>
闃叉紼嬪簭鍚姩涓ゆ鐨勬柟娉旵reateMutex() http://m.shnenglu.com/finehai/archive/2009/07/21/90745.htmlBlueseaBlueseaTue, 21 Jul 2009 09:05:00 GMThttp://m.shnenglu.com/finehai/archive/2009/07/21/90745.htmlhttp://m.shnenglu.com/finehai/comments/90745.htmlhttp://m.shnenglu.com/finehai/archive/2009/07/21/90745.html#Feedback3http://m.shnenglu.com/finehai/comments/commentRss/90745.htmlhttp://m.shnenglu.com/finehai/services/trackbacks/90745.html
HANDLE hMutex = CreateMutex(NULL, false"Process");
         
if (GetLastError() == ERROR_ALREADY_EXISTS)
         
{
            CloseHandle(hMutex);
            MessageBox(Application
->Handle, "紼嬪簭宸茬粡鍦ㄨ繍琛屼腑錛屼笉鑳介噸澶嶅惎鍔紒""鎻愮ず", MB_OK +MB_ICONWARNING);
            Application
->Terminate();
            
return 0;
         }

         Application
->CreateForm(__classid(TForm1), &Form1);

涓昏浣跨敤鍒癈reateMutex()鍑芥暟鍜孏etLastError()浠ュ強(qiáng)涓涓父閲廍RROR_ALREADY_EXISTS.

褰撶劧, 浣犵殑紼嬪簭鏈夌獥浣撶殑璇? 榪樺彲浠ヤ嬌鐢‵indWindow().

void *handle = FindWindow(NULL, WindowName.c_str()); 
if (handle!=NULL)
    
return 0


榪涚▼鐨勪簰鏂ヨ繍琛?/p>

銆銆姝e父鎯呭喌涓嬶紝涓涓繘紼嬬殑榪愯涓鑸槸涓嶄細(xì)褰卞搷鍒板叾浠栨鍦ㄨ繍琛岀殑榪涚▼鐨勩備絾鏄浜庢煇浜涙湁鐗規(guī)畩瑕佹眰鐨勫浠ョ嫭鍗犳柟寮忎嬌鐢ㄤ覆琛屽彛絳夌‖浠惰澶囩殑紼嬪簭灝辮姹傚湪鍏惰繘紼嬭繍琛屾湡闂翠笉鍏佽鍏朵粬璇曞浘浣跨敤姝ょ鍙h澶囩殑紼嬪簭榪愯鐨勶紝鑰屼笖姝ょ被紼嬪簭閫氬父涔熶笉鍏佽榪愯鍚屼竴涓▼搴忕殑澶氫釜瀹炰緥銆傝繖灝卞紩鍑轟簡榪涚▼浜掓枼鐨勯棶棰樸?/p>

銆銆瀹炵幇榪涚▼浜掓枼鐨勬牳蹇冩濇兂姣旇緝綆鍗曪細(xì)榪涚▼鍦ㄥ惎鍔ㄦ椂棣栧厛媯鏌ュ綋鍓嶇郴緇熸槸鍚﹀凡緇忓瓨鍦ㄦ湁姝よ繘紼嬬殑瀹炰緥錛屽鏋滄病鏈夛紝榪涚▼灝嗘垚鍔熷垱寤哄茍璁劇疆鏍囪瘑瀹炰緥宸茬粡瀛樺湪鐨勬爣璁般傛鍚庡啀鍒涘緩榪涚▼鏃跺皢浼?xì)閫氳繃璇ユ爣璁拌岀煡鏅撳叾瀹炰緥宸茬粡瀛樺湪錛屼粠鑰屼繚璇佽繘紼嬪湪緋葷粺涓彧鑳藉瓨鍦ㄤ竴涓疄渚嬨傚叿浣撳彲浠ラ噰鍙栧唴瀛樻槧灝勬枃浠躲佹湁鍚嶄簨浠墮噺銆佹湁鍚嶄簰鏂ラ噺浠ュ強(qiáng)鍏ㄥ眬鍏變韓鍙橀噺絳夊縐嶆柟娉曟潵瀹炵幇銆備笅闈㈠氨鍒嗗埆瀵瑰叾涓叿鏈変唬琛ㄦх殑鏈夊悕浜掓枼閲忓拰鍏ㄥ眬鍏變韓鍙橀噺榪欎袱縐嶆柟娉曡繘琛屼粙緇嶏細(xì)

// 鍒涘緩浜掓枼閲?/span>
HANDLE m_hMutex = CreateMutex(NULL, FALSE, "Sample07");
// 媯鏌ラ敊璇唬鐮?/span>
if (GetLastError() == ERROR_ALREADY_EXISTS) {
// 濡傛灉宸叉湁浜掓枼閲忓瓨鍦ㄥ垯閲婃斁鍙ユ焺騫跺浣嶄簰鏂ラ噺
銆CloseHandle(m_hMutex);
銆m_hMutex 
= NULL;
// 紼嬪簭閫鍑?/span>
return FALSE;
}


涓婇潰榪欐浠g爜婕旂ず浜嗘湁鍚嶄簰鏂ラ噺鍦ㄨ繘紼嬩簰鏂ヤ腑鐨勭敤娉曘備唬鐮佺殑鏍稿績鏄疌reateMutex錛堬級瀵規(guī)湁鍚嶄簰鏂ラ噺鐨勫垱寤恒侰reateMutex錛堬級鍑芥暟鍙敤鏉ュ垱寤轟竴涓湁鍚嶆垨鏃犲悕鐨勪簰鏂ラ噺瀵硅薄錛屽叾鍑芥暟鍘熷瀷涓猴細(xì)

HANDLE CreateMutex(
銆LPSECURITY_ATTRIBUTES lpMutexAttributes, 
// 鎸囧悜瀹夊叏灞炴х殑鎸囬拡
銆BOOL bInitialOwner, // 鍒濆鍖栦簰鏂ュ璞$殑鎵鏈夎?/span>
銆LPCTSTR lpName // 鎸囧悜浜掓枼瀵硅薄鍚嶇殑鎸囬拡
);


濡傛灉鍑芥暟鎴愬姛鎵ц錛屽皢榪斿洖涓涓簰鏂ラ噺瀵硅薄鐨勫彞鏌勩傚鏋滃湪CreateMutex錛堬級鎵ц鍓嶅凡緇忓瓨鍦ㄦ湁鐩稿悓鍚嶅瓧鐨勪簰鏂ラ噺錛屽嚱鏁板皢榪斿洖榪欎釜宸茬粡瀛樺湪浜掓枼閲忕殑鍙ユ焺錛屽茍涓斿彲浠ラ氳繃GetLastError錛堬級寰楀埌閿欒浠g爜ERROR_ALREADY_EXIST銆傚彲瑙侊紝閫氳繃瀵歸敊璇唬鐮丒RROR_ALREADY_EXIST鐨勬嫻嬪彲浠ュ疄鐜癈reateMutex錛堬級瀵硅繘紼嬬殑浜掓枼銆?/p>

        寤虹珛浜掓枼浣擄紝鐢ㄦ潵鍚屾銆傚鏋滀竴涓嚎紼嬭幏鍙栦簡浜掓枼浣擄紝鍒欒鑾峰彇璇ヤ簰鏂ヤ綋鐨勭浜屼釜綰跨▼灝嗚鎸傝搗錛岀洿鍒扮涓涓嚎紼嬮噴鏀捐浜掓枼浣撱?

鍙傛暟
lpMutexAttributes
鎸囧悜涓涓猄ECURITY_ATTRIBUTES緇撴瀯鐨勬寚閽堬紝榪欎釜緇撴瀯鍐沖畾浜掓枼浣撳彞鏌勬槸鍚﹁瀛愯繘紼嬬戶鎵褲?nbsp;   
bInitialOwner
甯冨皵綾誨瀷錛屽喅瀹氫簰鏂ヤ綋鐨勫垱寤鴻呮槸鍚︿負(fù)鎷ユ湁鑰?
lpName
鎸囧悜浜掓枼浣撳悕瀛楀瓧絎︿覆鐨勬寚閽堛備簰鏂ヤ綋鍙互鏈夊悕瀛椼?
浜掓枼浣撶殑濂藉鏄彲浠ュ湪榪涚▼闂村叡浜?/p>

蹇冨緱浣撲細(xì)錛?br>    CreateMutex() 鐢ㄤ簬鏈夌嫭鍗犺姹傜殑紼嬪簭 (鍦ㄥ叾榪涚▼榪愯鏈熼棿涓嶅厑璁稿叾浠栦嬌鐢ㄦ绔彛璁懼鐨勭▼搴忚繍琛岋紝鎴栦笉鍏佽鍚屽悕紼嬪簭榪愯)銆傚鏈夊悓鍚嶇▼搴忚繍琛岋紝鍒欓氳繃 GetLastError錛堬級寰楀埌閿欒浠g爜 ERROR_ALREADY_EXIST銆?/p>

鍒氭墠鍙堟墽琛屼簡涓嬪緱鍑虹殑緇撴灉錛堢▼搴忓悕samp錛?br>       涓鑸儏鍐典笅錛氫竴榪涘叆璋冭瘯闃舵錛岃繘紼嬬鐞嗗櫒涓氨鍑虹幇浜唖amp榪涚▼錛屾墽琛屽埌CreateMutex鏃惰繑鍥炶繘紼嬪彞鏌勶紝鎵ц鍒癷f(GetLastError() == ERROR_ALREADY_EXISTS ) 榪涜鍒ゆ柇鏃訛紝璺寵繃涓嶆墽琛宨f涓殑鍐呭錛屾墍浠ヨ〃紺烘病鏈変簰鏂ャ?br>       璋冭瘯涔嬪墠鍏堣繍琛宒ebug涓殑samp.exe鍐嶈皟璇曪細(xì)涓榪涘叆璋冭瘯闃舵錛岃繘紼嬬鐞嗗櫒涓氨鍑虹幇浜嗕袱涓猻amp榪涚▼錛屾墽琛屽埌CreateMutex鏃惰繑鍥炶繘紼嬪彞鏌勶紝鎵ц鍒癷f(GetLastError() == ERROR_ALREADY_EXISTS ) 榪涜鍒ゆ柇鏃訛紝鎵цif涓殑鍐呭錛岃〃紺烘湁浜掓枼銆?/p>

Bluesea 2009-07-21 17:05 鍙戣〃璇勮
]]>
甯哥敤鐨勬帓搴忕畻娉曟葷粨http://m.shnenglu.com/finehai/archive/2009/07/18/90460.htmlBlueseaBlueseaSat, 18 Jul 2009 12:53:00 GMThttp://m.shnenglu.com/finehai/archive/2009/07/18/90460.htmlhttp://m.shnenglu.com/finehai/comments/90460.htmlhttp://m.shnenglu.com/finehai/archive/2009/07/18/90460.html#Feedback0http://m.shnenglu.com/finehai/comments/commentRss/90460.htmlhttp://m.shnenglu.com/finehai/services/trackbacks/90460.html瀹為檯搴旂敤涓渶甯哥敤鐨勬帓搴忔槸蹇熸帓搴忓拰鍫嗘帓搴忋傛墍璋撳爢鎺掑簭錛屽氨鏄皢鏈灝忕殑涓涓兼斁鍒板爢鏍堢殑欏墮儴錛岃繖鏍峰氨鍙互浣挎渶鍚庡嚭鏉ョ殑鏁板畬鎴愭帓搴忋傚揩閫熸帓搴忔槸涓嶇ǔ瀹氱殑錛屽爢鎺掑簭鏄ǔ瀹氱殑銆傛墍璋撶ǔ瀹氾紝灝辨槸褰撲袱涓肩浉絳夋椂錛屾帓搴忓悗涓や釜鍊肩殑欏哄簭鍜屾帓搴忓墠鐩稿悓銆備互涓婁袱縐嶆帓搴忎嬌鐢ㄧ殑鑼冨洿鍜屾儏鍐墊槸涓嶅悓鐨勶紝涓鑸浜庤嚜鐒剁敓鎴愬簭鍒楁帓搴忎嬌鐢ㄥ揩閫熸帓搴忔晥鐜囨瘮杈冮珮錛岃屽浜庡凡緇忔湁涓瀹氶『搴忕殑搴忓垪錛屼嬌鐢ㄥ爢鎺掑簭姣旇緝鍚堥傦紝鑰屼笖紼沖畾鐨勩?o:p>

榪欓噷涓昏鎬葷粨甯哥敤鐨?縐嶆帓搴忥紝鍒嗗埆鏄揩閫熸帓搴忥紝鍐掓場鎺掑簭錛堜篃鍙氦鎹㈡帓搴忥級錛岄夋嫨鎺掑簭錛宻hell鎺掑簭錛屾彃鍏ユ帓搴忋?o:p>

涓嬭竟鍒嗗埆浠嬬粛錛?o:p>

1蹇熸帓搴忥紝灝辨槸浠庝竴涓簭鍒椾腑闅忔剰鍙栦竴涓暟錛岀劧鍚庡鍓╀笅鐨勬暟榪涜鍒嗙被錛屽皬鐨勬斁鍒板乏杈癸紝澶х殑鏀懼埌鍙寵竟銆傚姝よ繘琛屼笅鍘葷煡閬撴渶鍚庛侼(n-1)/2.絀洪棿澶嶆潅搴︽槸o錛坣錛?

2鍐掓場鎺掑簭錛屽氨鏄粠絎竴涓暟寮濮嬪拰鍚庝竴涓暟姣旇緝錛岀劧鍚庝緷鎯呭喌浜ゆ崲錛岀劧鍚庡啀鐢ㄧ浜屼釜鍜岀涓変釜姣旇緝浜ゆ崲錛屽姝ゅ弽澶嶏紝鐩村埌鏈鍚庝竴涓備竴鐩磋繘琛宯杞氨鍙互瀹屾垚鎺掑簭銆?o:p>

3閫夋嫨鎺掑簭錛屽氨鏄皢涓涓簭鍒椾腑鐨勬渶灝忕殑鏀懼埌絎竴涓紝鐒跺悗鍐嶅皢鍓╀笅鐨勬暟鎹敤鐩稿悓鐨勬柟寮忓垎鍒斁鍒板悗涓浣嶃傚畠鐨勭┖闂村鏉傚害鏄疧(1).

4shell鎺掑簭錛屽氨鏄皢鏈変竴瀹氶棿闅旂殑鏁拌繘琛屾帓搴忥紝騫朵笖闂撮殧鍙樺皬錛屼篃灝辨槸寮濮嬫槸n/2,鐒跺悗緇х畫鍙樺皬錛屼竴鑸兘鏄互涓鍗婁負(fù)鏍囧噯錛岀洿鍒版渶鍚庨棿闅斿彧鏈?錛屼篃灝卞畬鎴愪簡鎺掑簭銆傞渶瑕佺殑絀洪棿澶嶆潅搴︽槸O(1).

5鎻掑叆鎺掑簭錛屽氨姣斿騫蟲椂鐜╃殑鎵戝厠鎺掞紝涓鑸暣鐞嗘帓鐨勬椂鍊欓渶瑕佸皢鎺掓帓搴忥紝褰撲綘鎷垮埌涓寮犳柊鎺掔殑鏃跺欙紝灝辮姣旇緝宸﹁竟鍜屽彸杈癸紝鍙湁鍦ㄥ乏鍙充腑闂寸殑閭d釜鍊肩殑鏃跺欐墠璇存槑鎺掑簭鎴愬姛銆傚畠闇瑕佺殑絀洪棿澶嶆潅搴︿篃鏄疧(1).

Ps:絀洪棿澶嶆潅搴﹀氨鏄渶瑕佸彟澶栧崰鐢ㄧ殑絀洪棿銆?o:p>

浠ヤ笂鎺掑簭涓紝鍙湁蹇熸帓搴忔槸O錛坣錛夛紝鍏朵粬閮芥槸O錛?錛夛紝鍥犱負(fù)鍙湁蹇熸帓搴忛渶瑕佸彟澶栧啀璧峰瓨鍌ㄧ┖闂達(dá)紝鑰屽叾浠栭兘鏄湪鍘熸潵絀洪棿涓鍔犱竴涓┖闂村氨鍙互銆?o:p>



Bluesea 2009-07-18 20:53 鍙戣〃璇勮
]]>
鍫嗗拰鏍堢殑鍖哄埆http://m.shnenglu.com/finehai/archive/2009/07/18/90459.htmlBlueseaBlueseaSat, 18 Jul 2009 12:49:00 GMThttp://m.shnenglu.com/finehai/archive/2009/07/18/90459.htmlhttp://m.shnenglu.com/finehai/comments/90459.htmlhttp://m.shnenglu.com/finehai/archive/2009/07/18/90459.html#Feedback0http://m.shnenglu.com/finehai/comments/commentRss/90459.htmlhttp://m.shnenglu.com/finehai/services/trackbacks/90459.html鐩稿悓錛氫袱鑰呴兘鏄湪鍐呭瓨涓?/p>

鍖哄埆錛?/p>

1鍫嗙殑瀹歸噺姣旇緝澶э紝鏍堢殑瀹歸噺姣旇緝?yōu)畯銆?/p>

2鍫嗙浉褰撲簬涓涓叏灞鍙橀噺錛屽彲浠ヤ負(fù)鍚勭鍑芥暟浣跨敤錛屾爤涓鑸彧鏄負(fù)鍑芥暟鍐呴儴浣跨敤銆傚湪寤虹珛浜嗘柊鐨勫璞℃椂錛屽彲浠ヤ嬌鐢╪ew錛屼篃鍙互鐩存帴classtype a錛涘墠鑰呭氨鏄痭ew錛屽悗鑰呭氨鏄洿鎺ユ斁鍒頒簡鏍堜腑銆?/p>

3 鍫嗙殑鍙橀噺鍙互鍔ㄦ佸垎閰嶅拰閲婃斁 涓嶇敤浜嗗氨鏀句簡 鑺傜害鍐呭瓨

鏍堢殑鍐呭瓨鍙湁鍦ㄥ嚱鏁扮粨鏉熷悗鎵嶉噴鏀俱?/p>

Bluesea 2009-07-18 20:49 鍙戣〃璇勮
]]>
铏氬嚱鏁版葷粨http://m.shnenglu.com/finehai/archive/2009/07/18/90458.htmlBlueseaBlueseaSat, 18 Jul 2009 12:44:00 GMThttp://m.shnenglu.com/finehai/archive/2009/07/18/90458.htmlhttp://m.shnenglu.com/finehai/comments/90458.htmlhttp://m.shnenglu.com/finehai/archive/2009/07/18/90458.html#Feedback0http://m.shnenglu.com/finehai/comments/commentRss/90458.htmlhttp://m.shnenglu.com/finehai/services/trackbacks/90458.html1 濡傛灉浣犱及璁℃淳鐢熺被浼?xì)閲嶆柊瀹氫箟涓涓垚鍛樺嚱鏁幫紝閭d箞浣犲氨鎶婂熀綾諱腑鐨勮繖涓嚱鏁板啓鎴恦irtual


2 閫氳繃鍗曚竴鎸囦護(hù)璋冪敤涓嶅悓鍑芥暟錛屽氨鏄鎬丳olymorphism,"ability to asume many forms" 铏氬嚱鏁版槸c錛嬶紜璇█polymorphism鎬ц川浠ュ強(qiáng)鍔ㄦ佽仈緙栫殑鍏抽敭


3 鏃㈢劧鎶借薄綾諱腑鐨勮櫄鍑芥暟涓嶆墦綆楄璋冪敤錛岄偅涔堝氨鎶婂畠璁劇疆鎴愮函铏氬嚱鏁般?


4 鎷ユ湁綰櫄鍑芥暟鑰呬負(fù)鎶借薄綾匯?


5 鎶借薄綾諱笉鑳戒駭鐢熷嚭瀵硅薄瀹炰綋錛屼絾鏄垜浠彲浠ユ嫢鏈夋寚鍚戞娊璞$被鐨勬寚閽堬紝浠ヤ究浜庢搷浣滄娊璞$被鐨勫悇涓淳鐢熺被銆?


6 铏氬嚱鏁版淳鐢熶笅鍘諱粛鏄櫄鍑芥暟錛屽彲浠ヤ笉鍐檝irtual銆?



Bluesea 2009-07-18 20:44 鍙戣〃璇勮
]]>
鍏充簬鍥炶皟鍑芥暟http://m.shnenglu.com/finehai/archive/2009/07/18/90457.htmlBlueseaBlueseaSat, 18 Jul 2009 12:41:00 GMThttp://m.shnenglu.com/finehai/archive/2009/07/18/90457.htmlhttp://m.shnenglu.com/finehai/comments/90457.htmlhttp://m.shnenglu.com/finehai/archive/2009/07/18/90457.html#Feedback0http://m.shnenglu.com/finehai/comments/commentRss/90457.htmlhttp://m.shnenglu.com/finehai/services/trackbacks/90457.html鍥炶皟鍑芥暟鐨勫簲鐢ㄦ儏鍐碉紝鏄負(fù)浜嗘暣涓」鐩腑鐨勭▼搴忓悇縐嶄笉鍚岀殑紼嬪簭妯″潡鐨勮皟鐢ㄣ備竴鑸槸瀵硅鏁扮殑鎯呭喌榪涜蹇呰鐨勬搷浣溿?


涓句緥鍑芥暟妯″潡A錛屽嚱鏁版ā鍧桞錛屽鏋滃嚱鏁版ā鍧桞涓殑鏌愪釜鍑芥暟b瑕佸湪鍥哄畾鏃墮棿n璋冪敤鍑芥暟A涓殑鏌愪釜鍑芥暟a銆?榪欓噷棣栧厛鏄庣櫧鍝釜鏄洖璋冨嚱鏁幫紝榪欓噷鐨勫嚱鏁癮灝辨槸鍥炶皟鍑芥暟銆?

濡傛灉瑕佸畬鎴愯繖涓換鍔★紝灝辮鍦ㄥ嚱鏁版ā鍧桞涓鍔犱竴涓嚱鏁幫紝鍙敞鍐屽嚱鏁癱錛屽綋鏃墮棿婊¤凍浜嗚瀹氱殑n錛屽氨瑕佽皟鐢ˋ涓殑a錛?B涓殑娉ㄥ唽鍑芥暟c騫朵笉鐭ラ亾瑕佹墽琛屼粈涔堟搷浣滐紝瀹冨彧鏄礋璐e湪涓瀹氱殑鏃舵満璋冪敤鍑芥暟a銆?

c鍑芥暟涓鑸瓨鏀句簡鍑芥暟a鐨勬寚閽堬紝浠ヤ究璋冪敤錛岃繕鏈夊氨鏄畾鏃剁殑鏃墮棿鍙傛暟銆?/p>

榪欓噷闇瑕佹敞鎰忓嚑鐐癸細(xì)

1鍑芥暟妯″潡A鍜屽嚱鏁版ā鍧桞蹇呴』鍦ㄥ悓涓涓墿鐞嗗湴鍧鍧椾腑錛屽鏋滄槸鍦ㄤ笉鍚岀殑鐗╃悊鍦板潃鐨勭▼搴忔ā鍧楁槸涓嶅彲浠ヤ嬌鐢ㄧ殑銆?/p>

2涓鑸簲鐢ㄥ埌瀹氭椂鐨勮皟鐢ㄦ煇涓ā鍧楃殑鍑芥暟

3琚皟鐢ㄧ殑鍑芥暟a鍙互娌℃湁瀹炵幇

涓句釜渚嬪瓙錛屽氨鏄紝涔扮背a錛岃佹澘b涓嶅湪錛屼綘鐣欑數(shù)璇漜錛屼粬瑙佺數(shù)璇濆彿鐮佹墦緇欎綘銆?/p>

Bluesea 2009-07-18 20:41 鍙戣〃璇勮
]]>
閫佺粰姝e湪瀛︿範(fàn)C++鏈嬪弸http://m.shnenglu.com/finehai/archive/2009/07/18/90456.htmlBlueseaBlueseaSat, 18 Jul 2009 12:38:00 GMThttp://m.shnenglu.com/finehai/archive/2009/07/18/90456.htmlhttp://m.shnenglu.com/finehai/comments/90456.htmlhttp://m.shnenglu.com/finehai/archive/2009/07/18/90456.html#Feedback0http://m.shnenglu.com/finehai/comments/commentRss/90456.htmlhttp://m.shnenglu.com/finehai/services/trackbacks/90456.html        1.鎶奀++褰撴垚涓闂ㄦ柊鐨勮璦瀛︿範(fàn)錛堝拰C娌″暐鍏崇郴錛佺湡鐨勩傦級錛?

銆銆2.鐪嬨奣hinking In C++銆嬶紝涓嶈鐪嬨奀++鍙樻垚姝葷浉銆嬶紱

銆銆3.鐪嬨奣he C++ Programming Language銆嬪拰銆奍nside The C++ Object Model銆?涓嶈鍥犱負(fù)浠栦滑寰堥毦鑰屾垜浠嚜宸辨槸鍒濆鑰呮墍浠ュ氨涓嶇湅錛?

銆銆4.涓嶈琚玍C銆丅CB銆丅C銆丮C銆乀C絳夎瘝姹囨墍榪鋒儜鈥斺斾粬浠兘鏄泦鎴愬紑鍙戠幆澧冿紝鑰屾垜浠瀛︾殑鏄竴闂ㄨ璦錛?

銆銆5.涓嶈鏀捐繃浠諱綍涓涓湅涓婂幓寰堢畝鍗曠殑灝忕紪紼嬮棶棰樷斺斾粬浠線寰騫朵笉閭d箞綆鍗曪紝鎴栬呭彲浠ュ紩浼稿嚭寰堝鐭ヨ瘑鐐癸紱

銆銆6.浼?xì)鐢╒isual C++錛屽茍涓嶈鏄庝綘浼?xì)C++錛?

銆銆7.瀛lass騫朵笉闅撅紝template銆丼TL銆乬eneric programming涔熶笉榪囧姝も斺旈毦鐨勬槸闀挎湡鍧氭寔瀹炶返鍜屼笉閬椾綑鍔涚殑鍗氳緹や功錛?

銆銆8.濡傛灉涓嶆槸澶╂墠鐨勮瘽錛屾兂瀛︾紪紼嬪氨涓嶈鎯崇帺娓告垙鈥斺斾綘浠ヤ負(fù)浣犲仛鍒頒簡錛屽叾瀹炰綘鐨凜++姘村鉤騫舵病鏈夊拰浣犻氬叧鐨勮兘鍔涗竴璧峰彉楂樷斺斿叾瀹炲彲浠ユ椂鍒昏浣忥細(xì)瀛++鏄負(fù)浜嗙紪娓告垙鐨勶紱

銆銆9.鐪媀isual C++鐨勪功錛屾槸瀛︿笉浜咰++璇█鐨勶紱

銆銆10.嫻簛鐨勪漢瀹規(guī)槗璇達(dá)細(xì)XX璇█涓嶈浜嗭紝搴旇瀛Y錛涒斺旀槸浣犺嚜宸變笉琛屼簡鍚э紒錛?

銆銆11.嫻簛鐨勪漢瀹規(guī)槗闂細(xì)鎴戝埌搴曡瀛︿粈涔堬紱鈥斺斿埆闂紝瀛﹀氨瀵逛簡錛?

銆銆12.嫻簛鐨勪漢瀹規(guī)槗闂細(xì)XX鏈夐挶閫斿悧錛涒斺斿緩璁綘鍘繪姠閾惰錛?

銆銆13.嫻簛鐨勪漢瀹規(guī)槗璇達(dá)細(xì)鎴戣涓枃鐗堬紒鎴戣嫳鏂囦笉琛岋紒鈥斺斾笉琛岋紵瀛﹀憖錛?

銆銆14.嫻簛鐨勪漢瀹規(guī)槗闂細(xì)XX鍜孻Y鍝釜濂斤紱鈥斺斿憡璇変綘鍚э紝閮藉ソ鈥斺斿彧瑕佷綘瀛﹀氨琛岋紱

銆銆15.嫻簛鐨勪漢鍒嗕袱縐嶏細(xì)a)鍙鏈涜屼笉瀛︾殑浜猴紱b)鍙鑰屼笉鍧氭寔鐨勪漢錛?

銆銆16.鎶婃椂楂︾殑鎶鏈寕鍦ㄥ槾杈癸紝榪樹笉濡傛妸榪囨椂鐨勬妧鏈鍦ㄥ績閲岋紱
銆銆17.C++涓嶄粎浠呮槸鏀寔闈㈠悜瀵硅薄鐨勭▼搴忚璁¤璦錛?

銆銆18.瀛︿範(fàn)緙栫▼鏈濂界殑鏂規(guī)硶涔嬩竴灝辨槸闃呰婧愪唬鐮侊紱

銆銆19.鍦ㄤ換浣曟椂鍒婚兘涓嶈璁や負(fù)鑷繁鎵嬩腑鐨勪功宸茬粡瓚沖浜嗭紱

銆銆20.璇烽槄璇匯奣he Standard C++ Bible銆?涓枃鐗堬細(xì)鏍囧噯C++瀹濆吀)錛屾帉鎻++鏍囧噯錛?

銆銆21.鐪嬪緱鎳傜殑涔︼紝璇蜂粩緇嗙湅錛涚湅涓嶆噦鐨勪功錛岃紜潃澶寸毊鐪嬶紱

銆銆22.鍒寚鏈涚湅絎竴閬嶄功灝辮兘璁頒綇鍜屾帉鎻′粈涔堚斺旇鐪嬬浜岄亶銆佺涓夐亶錛?

銆銆23.璇風(fēng)湅銆奅ffective C++銆嬪拰銆奙ore Effective C++銆嬩互鍙?qiáng)銆奅xceptional C++銆嬶紱

銆銆24.涓嶈鍋滅暀鍦ㄩ泦鎴愬紑鍙戠幆澧冪殑鎽囩涓婏紝瑕佸浼?xì)鎺у垑櫅嗘垚寮鍙戠幆澧冿紝榪樿瀛︿細(xì)鐢ㄥ懡浠よ鏂瑰紡澶勭悊紼嬪簭錛?

銆銆25.鍜屽埆浜轟竴璧瘋璁烘湁鎰忎箟鐨凜++鐭ヨ瘑鐐癸紝鑰屼笉鏄簤鍚礨X琛屼笉琛屾垨鑰匶Y涓嶼Z鍝釜濂斤紱

銆銆26.璇風(fēng)湅銆婄▼搴忚璁″疄璺點嬶紝騫朵弗鏍肩殑鎸夌収鍏惰姹傚幓鍋氾紱

銆銆27.涓嶈鍥犱負(fù)C鍜孋++涓湁涓浜涜娉曞拰鍏抽敭瀛楃湅涓婂幓鐩稿悓錛屽氨璁や負(fù)瀹冧滑鐨勬剰涔夊拰浣滅敤瀹屽叏涓鏍鳳紱

銆28.C++緇濅笉鏄墍璋撶殑C鐨?#8220;鎵╁厖”鈥斺斿鏋淐++涓寮濮嬪氨璧峰悕鍙玓璇█錛屼綘涓瀹氫笉浼?xì)鎶奀鍜孼璇█鑱旂郴寰楅偅涔堢揣瀵嗭紱

銆銆29.璇蜂笉瑕佽涓哄榪嘪X璇█鍐嶆敼瀛++浼?xì)鏈変粈涔堥棶棰樷斺斾綘鍙笉榪囧張鍦ㄥ涓闂ㄥ叏鏂扮殑璇█鑰屽凡錛?

銆銆30.璇誨畬浜嗐奍nside The C++ Object Model銆嬩互鍚庡啀鏉ヨ瀹氳嚜宸辨槸涓嶆槸宸茬粡瀛︿細(xì)浜咰++錛?

銆銆31.瀛︿範(fàn)緙栫▼鐨勭璇鏄細(xì)緙栫▼錛岀紪紼嬶紝鍐嶇紪紼嬶紱

銆銆32.璇風(fēng)暀鎰忎笅鍒椾功綾嶏細(xì)銆奀++闈㈠悜瀵硅薄楂樻晥緙栫▼錛圕++ Effective Object-Oriented Software Construction錛夈嬨婇潰鍚戝璞¤蔣浠舵瀯閫?Object-Oriented Software Construction)銆嬨婅璁℃ā寮忥紙Design Patterns錛夈嬨奣he Art of Computer Programming銆嬶紱
銆銆33.璁頒綇錛氶潰鍚戝璞℃妧鏈笉鍙槸C++涓撴湁鐨勶紱

銆銆34.璇鋒妸涔︿笂鐨勭▼搴忎緥瀛愪翰鎵嬭緭鍏ュ埌鐢?shù)鑴戜笂瀹炶返锛屽嵆鋴砷厤濂楀厜鐩樹腑鏈夋簮浠g爜锛?

銆銆35.鎶婂湪涔︿腑鐪嬪埌鐨勬湁鎰忎箟鐨勪緥瀛愭墿鍏咃紱

銆銆36.璇烽噸瑙咰++涓殑寮傚父澶勭悊鎶鏈紝騫跺皢鍏跺垏瀹炵殑榪愮敤鍒拌嚜宸辯殑紼嬪簭涓紱

銆銆37.緇忓父鍥為【鑷繁浠ュ墠鍐欒繃鐨勭▼搴忥紝騫跺皾璇曢噸鍐欙紝鎶婅嚜宸卞鍒扮殑鏂扮煡璇嗚繍鐢ㄨ繘鍘伙紱

銆銆38.涓嶈婕忔帀涔︿腑浠諱綍涓涓粌涔?fàn)棰樷斺旇鍏ㄩ儴鍋氬畬騫惰褰曚笅瑙i鎬濊礬錛?

銆銆39.C++璇█鍜孋++鐨勯泦鎴愬紑鍙戠幆澧冭鍚屾椂瀛︿範(fàn)鍜屾帉鎻★紱

銆銆40.鏃㈢劧鍐沖畾浜嗗C++,灝辮鍧氭寔瀛︿笅鍘伙紝鍥犱負(fù)瀛︿範(fàn)紼嬪簭璁捐璇█鐨勭洰鐨勬槸鎺屾彙紼嬪簭璁捐鎶鏈紝鑰岀▼搴忚璁℃妧鏈槸璺ㄨ璦鐨勶紱

銆銆41.灝辮C++璇█鐨勫悇縐嶅鉤鍙板拰寮鍙戠幆澧冨幓嬋鐑堢殑绔炰簤鍚э紝鎴戜滑瑕佷互瀛︿範(fàn)C++璇█鏈韓涓轟富錛?

銆銆42.褰撲綘鍐機(jī)++紼嬪簭鍐欏埌涓鍗婂嵈鍙戠幇鑷繁鐢ㄧ殑鏂規(guī)硶寰堟嫏鍔f椂錛岃涓嶈椹笂鍋滄墜錛涜灝藉揩灝嗕綑涓嬬殑閮ㄥ垎綺楃暐鐨勫畬鎴愪互淇濊瘉榪欎釜璁捐鐨勫畬鏁存э紝鐒跺悗鍒嗘瀽鑷繁鐨勯敊璇茍閲嶆柊璁捐鍜岀紪鍐欙紙鍙傝43錛夛紱

銆銆43.鍒績鎬ワ紝璁捐C++鐨刢lass紜疄涓嶅鏄擄紱鑷繁紼嬪簭涓殑class鍜岃嚜宸辯殑class璁捐姘村鉤鏄湪涓嶆柇鐨勭紪紼嬪疄璺典腑瀹屽杽鍜屽彂灞曠殑錛?

銆銆44.鍐充笉瑕佸洜涓虹▼搴?#8220;寰堝皬”灝變笉閬靛驚鏌愪簺浣犱笉鐔熺粌鐨勮鍒欌斺斿ソ涔?fàn)鎯槸鍩瑰呎d嚭鏉ョ殑錛岃屼笉鏄竴嬈¤浣忕殑錛?

銆銆45.姣忓鍒頒竴涓狢++闅劇偣鐨勬椂鍊欙紝灝濊瘯鐫瀵瑰埆浜鴻瑙h繖涓煡璇嗙偣騫惰浠栫悊瑙b斺斾綘鑳借娓呮鎵嶈鏄庝綘鐪熺殑鐞嗚В浜嗭紱

銆銆46.璁板綍涓嬪湪鍜屽埆浜轟氦嫻佹椂鍙戠幇鐨勮嚜宸卞拷瑙嗘垨涓嶇悊瑙g殑鐭ヨ瘑鐐癸紱

銆銆47.璇蜂笉鏂殑瀵硅嚜宸卞啓鐨勭▼搴忔彁鍑烘洿楂樼殑瑕佹眰,鍝曚綘鐨勭▼搴忕増鏈彿浼?xì)鍙樻垚Version 100.XX錛?

銆銆48.淇濆瓨濂戒綘鍐欒繃鐨勬墍鏈夌殑紼嬪簭鈥斺旈偅鏄綘鏈濂界殑縐瘡涔嬩竴錛?

銆銆49.璇蜂笉瑕佸仛嫻簛鐨勪漢錛?

銆銆50.璇風(fēng)儹鐖盋++!

Bluesea 2009-07-18 20:38 鍙戣〃璇勮
]]>
鍐呭瓨鍒嗛厤鏂瑰紡http://m.shnenglu.com/finehai/archive/2009/07/18/90453.htmlBlueseaBlueseaSat, 18 Jul 2009 12:08:00 GMThttp://m.shnenglu.com/finehai/archive/2009/07/18/90453.htmlhttp://m.shnenglu.com/finehai/comments/90453.htmlhttp://m.shnenglu.com/finehai/archive/2009/07/18/90453.html#Feedback0http://m.shnenglu.com/finehai/comments/commentRss/90453.htmlhttp://m.shnenglu.com/finehai/services/trackbacks/90453.html鍐呭瓨鍒嗛厤鏂瑰紡
-------------------------------------------------------------------------

 

鍐呭瓨鍒嗛厤鏂瑰紡鏈変笁縐嶏細(xì)
錛?錛?浠?font style="BACKGROUND-COLOR: #ff00ff">闈欐佸瓨鍌ㄥ尯
鍩熷垎閰嶃傚唴瀛樺湪紼嬪簭緙栬瘧鐨勬椂鍊欏氨宸茬粡鍒嗛厤濂斤紝榪欏潡鍐呭瓨鍦ㄧ▼搴忕殑鏁翠釜榪愯鏈熼棿閮藉瓨鍦ㄣ?渚嬪鍏ㄥ眬鍙橀噺static鍙橀噺銆?br>錛?錛?鍦?font style="BACKGROUND-COLOR: #ff00ff">鏍堜笂鍒涘緩銆傚湪鎵ц鍑芥暟鏃訛紝鍑芥暟鍐呭眬閮ㄥ彉閲忕殑瀛樺偍鍗曞厓閮藉彲浠ュ湪鏍堜笂鍒涘緩錛屽嚱鏁版墽琛岀粨鏉熸椂榪欎簺瀛樺偍 鍗曞厓鑷姩琚噴鏀俱傛爤鍐呭瓨 鍒嗛厤榪愮畻鍐呯疆浜庡鐞嗗櫒鐨勬寚浠ら泦涓紝鏁堢巼寰堥珮錛屼絾鏄垎閰嶇殑鍐呭瓨瀹歸噺鏈夐檺銆?br>錛?錛?浠?font style="BACKGROUND-COLOR: #ff00ff">鍫嗕笂鍒嗛厤錛屼害縐板姩鎬佸唴瀛樺垎閰嶃傜▼搴忓湪榪愯鐨勬椂鍊欑敤malloc鎴杗ew鐢寵浠繪剰澶氬皯鐨勫唴瀛?/font>錛岀▼搴忓憳鑷繁璐熻矗鍦ㄤ綍鏃剁敤free鎴杁elete閲婃斁鍐呭瓨銆傚姩鎬佸唴瀛樼殑鐢熷瓨鏈熺敱鎴戜滑鍐沖畾錛屼嬌鐢ㄩ潪甯哥伒媧伙紝浣嗛棶棰樹篃鏈澶氥?/font>

甯歌鐨勫唴瀛橀敊璇強(qiáng)鍏跺絳?br>

-------------------------------------------------------------------------

 

鍙戠敓鍐呭瓨閿欒鏄歡闈炲父楹葷儲鐨勪簨鎯呫傜紪璇戝櫒涓嶈兘鑷姩鍙戠幇榪欎簺閿欒錛岄氬父鏄湪紼嬪簭榪愯鏃舵墠鑳芥崟鎹夊埌銆傝岃繖浜涢敊璇ぇ澶氭病鏈夋槑鏄劇殑鐥囩姸錛屾椂闅愭椂鐜幫紝澧炲姞浜嗘敼閿欑殑闅懼害銆傛湁鏃剁敤鎴鋒掓皵鍐插啿鍦版妸浣犳壘鏉ワ紝紼嬪簭鍗存病鏈夊彂鐢熶換浣曢棶棰橈紝浣犱竴璧幫紝閿欒鍙堝彂浣滀簡銆?/font>

 

甯歌鐨勫唴瀛橀敊璇強(qiáng)鍏跺絳栧涓嬶細(xì)

1>鍐呭瓨鍒嗛厤鏈垚鍔燂紝鍗翠嬌鐢ㄤ簡瀹冦?/font>

------------------------------------------
緙栫▼鏂版墜甯哥姱榪欑閿欒錛屽洜涓轟粬浠病鏈夋剰璇嗗埌鍐呭瓨鍒嗛厤浼?xì)涓嶆垚鍔熴傚父鐢ㄨВ鍐沖姙娉曟槸錛屽湪浣跨敤鍐呭瓨涔嬪墠媯 鎸囬拡鏄惁涓篘ULL銆?font style="BACKGROUND-COLOR: #0080ff">濡傛灉鎸囬拡p鏄嚱鏁扮殑鍙傛暟錛岄偅涔堝湪鍑芥暟鐨勫叆鍙e鐢╝ssert(p!=NULL)榪涜媯鏌ャ?/font>濡傛灉 鏄敤malloc鎴杗ew鏉ョ敵璇峰唴瀛橈紝搴旇鐢╥f(p==NULL) 鎴杋f(p=NULL)榪涜闃查敊澶勭悊銆?/font>

 

2>鍐呭瓨鍒嗛厤铏界劧鎴愬姛錛屼絾鏄皻鏈垵濮嬪寲灝卞紩鐢ㄥ畠

------------------------------------------
鐘繖縐嶉敊璇富瑕佹湁涓や釜璧峰洜錛氫竴鏄病鏈夊垵濮嬪寲鐨勮蹇碉紱浜屾槸璇互涓哄唴瀛樼殑緙虹渷鍒濆煎叏涓洪浂錛屽鑷村紩鐢ㄥ垵 閿欒錛堜緥濡傛暟緇勶級銆?br>鍐呭瓨鐨勭己鐪佸垵鍊肩┒绔熸槸浠涔堝茍娌℃湁緇熶竴鐨勬爣鍑嗭紝灝界鏈変簺鏃跺欎負(fù)闆跺鹼紝鎴戜滑瀹佸彲淇″叾鏃犱笉鍙俊鍏舵湁銆?font style="BACKGROUND-COLOR: #0080ff">鎵 浠ユ棤璁虹敤浣曠鏂瑰紡鍒涘緩鏁扮粍錛岄兘鍒繕浜嗚祴鍒濆鹼紝鍗充究鏄祴闆跺間篃涓嶅彲鐪佺暐錛屼笉瑕佸珜楹葷儲銆?/font>

 

3>鍐呭瓨鍒嗛厤鎴愬姛騫朵笖宸茬粡鍒濆鍖栵紝浣嗘搷浣滆秺榪囦簡鍐呭瓨鐨勮竟鐣屻?/font>

------------------------------------------
渚嬪鍦ㄤ嬌鐢ㄦ暟緇勬椂緇忓父鍙戠敓涓嬫爣"澶?"鎴栬?灝?"鐨勬搷浣溿傜壒鍒槸鍦╢or寰幆璇彞涓紝寰幆嬈℃暟寰堝鏄撴悶閿欙紝瀵艱嚧鏁扮粍鎿嶄綔瓚婄晫銆?/font>

 

4>蹇樿浜嗛噴鏀懼唴瀛橈紝閫犳垚鍐呭瓨娉勯湶銆?/font>
------------------------------------------
鍚湁榪欑閿欒鐨勫嚱鏁版瘡琚皟鐢ㄤ竴嬈″氨涓㈠け涓鍧楀唴瀛樸傚垰寮濮嬫椂緋葷粺鐨勫唴瀛樺厖瓚籌紝浣犵湅涓嶅埌閿欒銆傜粓鏈変竴嬈$▼搴忕獊鐒舵鎺夛紝緋葷粺鍑虹幇鎻愮ず錛氬唴瀛樿楀敖銆傚姩鎬佸唴瀛樼殑鐢寵涓庨噴鏀懼繀欏婚厤瀵癸紝紼嬪簭涓璵alloc涓巉ree鐨勪嬌鐢ㄦ鏁頒竴瀹氳鐩稿悓錛屽惁鍒欒偗瀹氭湁閿欒錛坣ew/delete鍚岀悊錛夈?/font>

 

5>閲婃斁浜嗗唴瀛樺嵈緇х畫浣跨敤瀹冦?/font>

------------------------------------------
鏈変笁縐嶆儏鍐碉細(xì)
錛?錛?
紼嬪簭涓殑瀵硅薄璋冪敤鍏崇郴榪囦簬澶嶆潅錛屽疄鍦ㄩ毦浠ユ悶娓呮鏌愪釜瀵硅薄絀剁珶鏄惁宸茬粡閲婃斁浜嗗唴瀛橈紝姝ゆ椂搴旇閲嶆柊璁捐鏁版嵁緇撴瀯錛屼粠鏍規(guī)湰涓婅В鍐沖璞$鐞嗙殑娣蜂貢灞闈€?/td>

錛?錛?
鍑芥暟鐨剅eturn璇彞鍐欓敊浜嗭紝娉ㄦ剰涓嶈榪斿洖鎸囧悜"鏍堝唴瀛?鐨?鎸囬拡"鎴栬?寮曠敤"錛屽洜涓鴻鍐呭瓨鍦ㄥ嚱鏁頒綋緇撴潫鏃惰鑷姩閿姣併?/td>

錛?錛?
浣跨敤free鎴杁elete閲婃斁浜嗗唴瀛樺悗錛屾病鏈夊皢鎸囬拡璁劇疆涓篘ULL銆傚鑷翠駭鐢?閲庢寚閽?銆?/td>

 

銆愯鍒?銆戠敤malloc鎴杗ew鐢寵鍐呭瓨涔嬪悗錛屽簲璇ョ珛鍗蟲鏌ユ寚閽堝兼槸鍚︿負(fù)NULL銆傞槻姝嬌鐢ㄦ寚閽堝間負(fù)NULL鐨勫唴瀛樸?br>銆愯鍒?銆?font style="BACKGROUND-COLOR: #0080ff">涓嶈蹇樿涓烘暟緇勫拰鍔ㄦ佸唴瀛樿祴鍒濆?/font>銆傞槻姝㈠皢鏈鍒濆鍖栫殑鍐呭瓨浣滀負(fù)鍙沖間嬌鐢ㄣ?br>銆愯鍒?銆戦伩鍏嶆暟緇勬垨鎸囬拡鐨勪笅鏍囪秺鐣岋紝鐗瑰埆瑕佸綋蹇冨彂鐢?澶?"鎴栬?灝?"鎿嶄綔銆?br>銆愯鍒?銆戝姩鎬佸唴瀛樼殑鐢寵涓庨噴鏀懼繀欏婚厤瀵癸紝闃叉鍐呭瓨娉勬紡銆?br>銆愯鍒?銆?font style="BACKGROUND-COLOR: #0080ff">鐢╢ree鎴杁elete閲婃斁浜嗗唴瀛樹箣鍚庯紝绔嬪嵆灝嗘寚閽堣緗負(fù)NULL錛岄槻姝駭鐢?閲庢寚閽?銆?/font>

 

 

-------------------------------------------------------------------------

 

鎸囬拡涓庢暟緇勭殑瀵規(guī)瘮
C++/C紼嬪簭涓紝鎸囬拡鍜屾暟緇勫湪涓嶅皯鍦版柟鍙互鐩鎬簰鏇挎崲鐫鐢紝璁╀漢浜х敓涓縐嶉敊瑙夛紝浠ヤ負(fù)涓よ呮槸絳変環(huán)鐨勩?br>    
鏁扮粍
-------------
鏁扮粍瑕佷箞鍦?font style="BACKGROUND-COLOR: #ffff80">闈欐佸瓨鍌ㄥ尯琚垱寤猴紙濡傚叏灞鏁扮粍
錛夛紝瑕佷箞鍦?font style="BACKGROUND-COLOR: #ffff80">鏍堜笂琚垱寤?/font>銆傛暟緇勫悕瀵瑰簲鐫錛堣屼笉鏄寚鍚戯級涓鍧楀唴瀛橈紝鍏?font style="BACKGROUND-COLOR: #ff0000">鍦板潃涓庡閲?/font>鍦ㄧ敓鍛芥湡鍐?font style="BACKGROUND-COLOR: #ff0000">淇濇寔涓嶅彉
錛屽彧鏈?font style="BACKGROUND-COLOR: #ff0000">鏁扮粍鐨勫唴瀹瑰彲浠ユ敼鍙?/font>銆?/font>

鎸囬拡
--------------
鎸囬拡鍙互闅忔椂鎸囧悜浠繪剰綾誨瀷鐨勫唴瀛樺潡錛屽畠鐨勭壒寰佹槸"鍙彉"錛屾墍浠ユ垜浠父鐢ㄦ寚閽堟潵鎿嶄綔鍔ㄦ佸唴瀛樸傛寚閽堣繙姣旀暟緇勭伒媧伙紝浣嗕篃鏇村嵄闄┿?/font>

 

涓嬮潰浠ュ瓧絎︿覆涓轟緥姣旇緝鎸囬拡涓庢暟緇勭殑鐗規(guī)с?/font>

1.淇敼鍐呭
------------------------------------------
紺轟緥1涓紝瀛楃鏁扮粍a鐨勫閲忔槸6涓瓧絎︼紝鍏跺唴瀹逛負(fù)hello\0銆俛鐨勫唴瀹瑰彲浠ユ敼鍙橈紝濡俛[0]= 'X'銆?br>鎸囬拡p鎸囧悜甯擱噺瀛楃涓?world"錛堜綅浜庨潤鎬佸瓨鍌ㄥ尯錛屽唴瀹逛負(fù)world\0錛夛紝甯擱噺瀛楃涓茬殑鍐呭鏄笉鍙互琚慨鏀圭殑銆?br>浠庤娉曚笂鐪嬶紝緙栬瘧鍣ㄥ茍涓嶈寰楄鍙[0]= ‘X'鏈変粈涔堜笉濡ワ紝浣嗘槸璇ヨ鍙ヤ紒鍥句慨鏀瑰父閲忓瓧絎︿覆鐨勫唴瀹硅屽鑷磋繍琛岄敊璇?br>

紺轟緥7-3-1 淇敼鏁扮粍鍜屾寚閽堢殑鍐呭
   ------------------------------
   char a[] = "hello";
   a[0] = 'X';
   cout << a << endl;
   char *p = "world"; // 娉ㄦ剰p鎸囧悜甯擱噺瀛楃涓?nbsp; 
   p[0] = 'X'; // 緙栬瘧鍣ㄤ笉鑳藉彂鐜拌閿欒cout << p << endl;
  

2.鍐呭澶嶅埗涓庢瘮杈?br>------------------------------------------
鏁扮粍澶嶅埗
--------
涓嶈兘瀵規(guī)暟緇勫悕榪涜鐩存帴澶嶅埗涓庢瘮杈冦傜ず渚?涓紝鑻ユ兂鎶婃暟緇刟鐨勫唴瀹瑰鍒剁粰鏁扮粍b錛屼笉鑳界敤璇彞 b = a 錛屽惁鍒欏皢浜х敓緙栬瘧閿欒銆傚簲璇ョ敤鏍囧噯搴撳嚱鏁?font style="BACKGROUND-COLOR: #0080ff">strcpy榪涜澶嶅埗
銆傚悓鐞嗭紝姣旇緝b鍜宎鐨勫唴瀹規(guī)槸鍚︾浉鍚岋紝涓嶈兘鐢╥f(b==a) 鏉ュ垽鏂紝搴旇鐢?font style="BACKGROUND-COLOR: #0080ff">鏍囧噯搴撳嚱鏁皊trcmp
榪涜姣旇緝銆?/font>

鎸囬拡澶嶅埗
--------
璇彞p = a 騫朵笉鑳芥妸a鐨勫唴瀹瑰鍒舵寚閽坧錛岃屾槸鎶奱鐨勫湴鍧璧嬬粰浜唒銆傝鎯沖鍒禷鐨勫唴瀹癸紝鍙互鍏堢敤搴撳嚱鏁癿alloc涓簆鐢寵涓鍧楀閲忎負(fù)strlen(a)+1涓瓧絎︾殑鍐呭瓨錛屽啀鐢╯trcpy榪涜瀛楃涓插鍒?/font>銆傚悓鐞嗭紝璇彞if(p==a) 姣旇緝鐨勪笉鏄唴瀹硅屾槸鍦板潃錛屽簲璇ョ敤搴撳嚱鏁皊trcmp鏉ユ瘮杈冦?/font>

紺轟緥2 鏁扮粍鍜屾寚閽堢殑鍐呭澶嶅埗涓庢瘮杈?br>-----------------------------------
        // 鏁扮粍...
char a[] = "hello";
char b[10];
strcpy(b, a); //涓嶈兘鐢╞ = a;
if(strcmp(b, a) == 0) // 涓嶈兘鐢?if (b == a)...
// 鎸囬拡...
int len = strlen(a);
char *p = (char *)malloc(sizeof(char)*(len+1));  
strcpy(p,a); // 涓嶈鐢?p = a;
if(strcmp(p, a) == 0) // 涓嶈鐢?if (p == a)...

3 璁$畻鍐呭瓨瀹歸噺
------------------------------------------
鏁扮粍
----
鐢ㄨ繍綆楃sizeof鍙互璁$畻鍑烘暟緇勭殑瀹歸噺錛堝瓧鑺傛暟錛夈?br>紺轟緥3涓紝sizeof(a)鐨勫兼槸12錛堟敞鎰忓埆蹇樹簡'\0'錛夈?/font>

鎸囬拡
----
鎸囬拡p鎸囧悜a錛屼絾鏄痵izeof(p)鐨勫煎嵈鏄?銆傝繖鏄洜涓簊izeof(p)寰楀埌鐨勬槸涓涓寚閽堝彉閲忕殑瀛楄妭鏁幫紝
鐩稿綋浜巗izeof(char*)錛岃屼笉鏄痯鎵鎸囩殑鍐呭瓨瀹歸噺銆?/font>

C++/C璇█娌℃湁鍔炴硶鐭ラ亾鎸囬拡鎵鎸囩殑鍐呭瓨瀹歸噺錛岄櫎闈炲湪鐢寵鍐呭瓨鏃惰浣忓畠銆?/font>

娉ㄦ剰
----
褰撴暟緇勪綔涓哄嚱鏁扮殑鍙傛暟榪涜浼犻掓椂錛岃鏁扮粍鑷姩閫鍖栦負(fù)鍚岀被鍨嬬殑鎸囬拡銆?/font>
紺轟緥3涓紝涓嶈鏁扮粍a鐨勫閲忔槸澶氬皯錛宻izeof(a)濮嬬粓絳変簬sizeof(char *)銆?br>      
       紺轟緥3 璁$畻鏁扮粍鍜屾寚閽堢殑鍐呭瓨瀹歸噺
-----------------------------
        char a[] = "hello world";
char *p = a; cout<< sizeof(a) << endl;// 12瀛楄妭
cout<< sizeof(p) << endl;// 4瀛楄妭

紺轟緥3錛坆錛?鏁扮粍閫鍖栦負(fù)鎸囬拡
-----------------------------
void Func(char a[100])
{
cout<< sizeof(a) << endl;// 4瀛楄妭鑰屼笉鏄?00瀛楄妭
   }

4銆佹寚閽堝弬鏁版槸濡備綍浼犻掑唴瀛樼殑錛?br>------------------------------------------
濡傛灉鍑芥暟鐨勫弬鏁版槸涓涓寚閽堬紝涓嶈鎸囨湜鐢ㄨ鎸囬拡鍘葷敵璇峰姩鎬佸唴瀛樸?br>紺轟緥4-1涓紝Test鍑芥暟鐨勮鍙etMemory(str, 200)騫舵病鏈変嬌str鑾峰緱鏈熸湜鐨勫唴瀛橈紝str渚濇棫鏄疦ULL錛屼負(fù)浠涔堬紵

紺轟緥4-1 璇曞浘鐢ㄦ寚閽堝弬鏁扮敵璇峰姩鎬佸唴瀛?br>----------------------------------
void GetMemory(char *p, int num)
{
p = (char *)malloc(sizeof(char) * num);
}
void Test(void)
{
char *str = NULL;
GetMemory(str, 100);// str 浠嶇劧涓?NULL
strcpy(str, "hello"); // 榪愯閿欒
}

姣涚梾鍑哄湪鍑芥暟GetMemory涓?font style="BACKGROUND-COLOR: #ff00ff">緙栬瘧鍣ㄦ繪槸瑕佷負(fù)鍑芥暟鐨勬瘡涓弬鏁板埗浣滀復(fù)鏃跺壇鏈?/font>錛?br>鎸囬拡鍙傛暟p鐨勫壇鏈槸 _p錛岀紪璇戝櫒浣?_p = p銆傚鏋滃嚱鏁頒綋鍐呯殑紼嬪簭淇敼浜哶p鐨勫唴瀹癸紝
灝卞鑷村弬鏁皃鐨勫唴瀹逛綔鐩稿簲鐨勪慨鏀廣傝繖灝辨槸鎸囬拡鍙互鐢ㄤ綔杈撳嚭鍙傛暟鐨勫師鍥犮?br>鍦ㄦ湰渚嬩腑錛宊p鐢寵浜嗘柊鐨勫唴瀛橈紝鍙槸鎶奯p鎵鎸囩殑鍐呭瓨鍦板潃鏀瑰彉浜嗭紝浣嗘槸p涓濇鏈彉銆?br>鎵浠ュ嚱鏁癎etMemory騫朵笉鑳借緭鍑轟換浣曚笢瑗褲?br>浜嬪疄涓婏紝姣忔墽琛屼竴嬈etMemory灝變細(xì)娉勯湶涓鍧楀唴瀛橈紝鍥犱負(fù)娌℃湁鐢╢ree閲婃斁鍐呭瓨銆?/font>

濡傛灉闈炲緱瑕佺敤鎸囬拡鍙傛暟鍘葷敵璇峰唴瀛橈紝閭d箞搴旇鏀圭敤"鎸囧悜鎸囬拡鐨勬寚閽?錛岃紺轟緥4-2銆?/font>

紺轟緥4-2鐢ㄦ寚鍚戞寚閽堢殑鎸囬拡鐢寵鍔ㄦ佸唴瀛?br>------------------------------------
void GetMemory2(char **p, int num)
{
*p = (char *)malloc(sizeof(char) * num);
}
void Test2(void)
{
char *str = NULL;
GetMemory2(&str, 100); // 娉ㄦ剰鍙傛暟鏄?&str錛岃屼笉鏄痵tr
strcpy(str, "hello");
cout<< str << endl;
free(str);
}


鐢變簬"鎸囧悜鎸囬拡鐨勬寚閽?榪欎釜姒傚康涓嶅鏄撶悊瑙o紝鎴戜滑鍙互鐢ㄥ嚱鏁拌繑鍥炲兼潵浼犻掑姩鎬佸唴瀛樸?br>榪欑鏂規(guī)硶鏇村姞綆鍗曪紝瑙佺ず渚?-3銆?/font>

紺轟緥4-3 鐢ㄥ嚱鏁拌繑鍥炲兼潵浼犻掑姩鎬佸唴瀛?br>-----------------------------------
char *GetMemory3(int num)
{
char *p = (char *)malloc(sizeof(char) * num);
return p;
}
void Test3(void)
{
char *str = NULL;
str = GetMemory3(100);
strcpy(str,"hello");
cout<< str << endl;
free(str);
}


鐢ㄥ嚱鏁拌繑鍥炲兼潵浼犻掑姩鎬佸唴瀛樿繖縐嶆柟娉曡櫧鐒跺ソ鐢紝浣嗘槸甯稿父鏈変漢鎶妑eturn璇彞鐢ㄩ敊浜嗐傝繖閲屽己璋冧笉瑕佺敤return璇彞榪斿洖鎸囧悜"鏍堝唴瀛?鐨勬寚閽堬紝鍥犱負(fù)璇ュ唴瀛樺湪鍑芥暟緇撴潫鏃惰嚜鍔ㄦ秷浜★紝瑙佺ず渚?-4銆?/p>

紺轟緥4-4 return璇彞榪斿洖鎸囧悜"鏍堝唴瀛?鐨勬寚閽?br>--------------------------------------------
char *GetString(void)
{
char p[] = "hello world";
return p;// 緙栬瘧鍣ㄥ皢鎻愬嚭璀﹀憡
}
void Test4(void)
{
char *str = NULL;str = GetString();// str 鐨勫唴瀹規(guī)槸鍨冨溇
cout<< str << endl;
}


鐢ㄨ皟璇曞櫒閫愭璺熻釜Test4錛屽彂鐜版墽琛宻tr = GetString璇彞鍚巗tr涓嶅啀鏄疦ULL鎸囬拡錛?br>浣嗘槸str鐨勫唴瀹逛笉鏄?hello world"鑰屾槸鍨冨溇銆?/p>

濡傛灉鎶婄ず渚?-4鏀瑰啓鎴愮ず渚?-5錛屼細(xì)鎬庝箞鏍鳳紵

紺轟緥4-5 return璇彞榪斿洖甯擱噺瀛楃涓?br>-----------------------------------
char *GetString2(void)
{
char *p = "hello world";
return p;
}
void Test5(void)
{
char *str = NULL;
str = GetString2();
cout<< str << endl;
}


鍑芥暟Test5榪愯铏界劧涓嶄細(xì)鍑洪敊錛屼絾鏄嚱鏁癎etString2鐨勮璁℃蹇靛嵈鏄敊璇殑銆?br>鍥犱負(fù)GetString2鍐呯殑"hello world"鏄父閲忓瓧絎︿覆錛屼綅浜庨潤鎬佸瓨鍌ㄥ尯錛屽畠鍦ㄧ▼搴忕敓鍛芥湡鍐呮亽瀹氫笉鍙樸?br>鏃犺浠涔堟椂鍊欒皟鐢℅etString2錛屽畠榪斿洖鐨勫緇堟槸鍚屼竴涓?鍙"鐨勫唴瀛樺潡銆?/p>

 

5 free鍜宒elete鎶婃寚閽堟庝箞鍟︼紵
------------------------------------------
鍒湅free鍜宒elete鐨勫悕瀛楁伓鐙犵嫚鐨勶紙灝ゅ叾鏄痙elete錛夛紝
瀹冧滑鍙槸鎶婃寚閽堟墍鎸囩殑鍐呭瓨緇欓噴鏀炬帀錛屼絾騫舵病鏈夋妸鎸囬拡鏈韓騫叉帀銆?/font>
鐢ㄨ皟璇曞櫒璺熻釜紺轟緥5錛屽彂鐜版寚閽坧琚玣ree浠ュ悗鍏跺湴鍧浠嶇劧涓嶅彉錛堥潪NULL錛夛紝
鍙槸璇ュ湴鍧瀵瑰簲鐨勫唴瀛樻槸鍨冨溇錛宲鎴愪簡"閲庢寚閽?銆?br>濡傛灉姝ゆ椂涓嶆妸p璁劇疆涓篘ULL錛屼細(xì)璁╀漢璇互涓簆鏄釜鍚堟硶鐨勬寚閽堛?br>濡傛灉紼嬪簭姣旇緝闀匡紝鎴戜滑鏈夋椂璁頒笉浣弍鎵鎸囩殑鍐呭瓨鏄惁宸茬粡琚噴鏀撅紝
鍦ㄧ戶緇嬌鐢╬涔嬪墠錛岄氬父浼?xì)鐢ㄨ鍙f (p !=NULL)榪涜闃查敊澶勭悊銆?br>寰堥仐鎲撅紝姝ゆ椂if璇彞璧蜂笉鍒伴槻閿欎綔鐢紝鍥犱負(fù)鍗充究p涓嶆槸NULL鎸囬拡錛?br>瀹冧篃涓嶆寚鍚戝悎娉曠殑鍐呭瓨鍧椼?/p>

紺轟緥5 p鎴愪負(fù)閲庢寚閽?br>--------------------
char *p = (char *) malloc(100);
strcpy(p, "hello");
free(p);        // p 鎵鎸囩殑鍐呭瓨琚噴鏀撅紝浣嗘槸p鎵鎸囩殑鍦板潃浠嶇劧涓嶅彉 ...
if(p != NULL) // 娌℃湁璧峰埌闃查敊浣滅敤
{      strcpy(p, "world"); // 鍑洪敊
}

 

6 鍔ㄦ佸唴瀛樹細(xì)琚嚜鍔ㄩ噴鏀懼悧錛?br>------------------------------------------
鍑芥暟浣撳唴鐨勫眬閮ㄥ彉閲忓湪鍑芥暟緇撴潫鏃惰嚜鍔ㄦ秷浜°傚緢澶氫漢璇互涓虹ず渚?鏄紜殑銆?br>鐞嗙敱鏄痯鏄眬閮ㄧ殑鎸囬拡鍙橀噺錛屽畠娑堜骸鐨勬椂鍊欎細(xì)璁╁畠鎵鎸囩殑鍔ㄦ佸唴瀛樹竴璧峰畬铔嬨傝繖鏄敊瑙夛紒

紺轟緥7-6 璇曞浘璁╁姩鎬佸唴瀛樿嚜鍔ㄩ噴鏀?br>------------------------------
void Func(void)
{
char *p = (char *) malloc(100); // 鍔ㄦ佸唴瀛樹細(xì)鑷姩閲婃斁鍚楋紵
}


鎴戜滑鍙戠幇鎸囬拡鏈変竴浜?浼兼槸鑰岄潪"鐨勭壒寰侊細(xì)
------------------------------------
錛?錛夋寚閽堟秷浜′簡錛屽茍涓嶈〃紺哄畠鎵鎸囩殑鍐呭瓨浼?xì)琚嚜鍔ㄩ噴鏀俱?br>錛?錛夊唴瀛樿閲婃斁浜嗭紝騫朵笉琛ㄧず鎸囬拡浼?xì)娑堜骸鎴栬呮垚浜哊ULL鎸囬拡銆?/font>
     榪欒〃鏄庨噴鏀懼唴瀛樺茍涓嶆槸涓浠跺彲浠ヨ崏鐜囧寰呯殑浜嬨備篃璁告湁浜轟笉鏈嶆皵錛?br>     涓瀹氳鎵懼嚭鍙互鑽夌巼琛屼簨鐨勭悊鐢憋細(xì)
     濡傛灉紼嬪簭緇堟浜嗚繍琛岋紝涓鍒囨寚閽堥兘浼?xì)娑堜骸锛屽姩鎬佸唴瀛樹細(xì)琚搷浣滅郴緇熷洖鏀躲?br>     鏃㈢劧濡傛錛屽湪紼嬪簭涓寸粓鍓嶏紝灝卞彲浠ヤ笉蹇呴噴鏀懼唴瀛樸佷笉蹇呭皢鎸囬拡璁劇疆涓篘ULL浜嗐?br>     緇堜簬鍙互鍋鋒噿鑰屼笉浼?xì)鍙戠敓閿欒浜嗗惂锛?br>鎯沖緱緹庛傚鏋滃埆浜烘妸閭f紼嬪簭鍙栧嚭鏉ョ敤鍒板叾瀹冨湴鏂規(guī)庝箞鍔烇紵

 

7 鏉滅粷"閲庢寚閽?
------------------------------------------
"閲庢寚閽?涓嶆槸NULL鎸囬拡錛屾槸鎸囧悜"鍨冨溇"鍐呭瓨鐨勬寚閽堛?br>浜轟滑涓鑸笉浼?xì)閿欑敤NULL鎸囬拡錛屽洜涓虹敤if璇彞寰堝鏄撳垽鏂?br>浣嗘槸"閲庢寚閽?鏄緢鍗遍櫓鐨勶紝if璇彞瀵瑰畠涓嶈搗浣滅敤銆?/p>

"閲庢寚閽?鐨勬垚鍥犱富瑕佹湁涓ょ錛?/p>

錛?錛夋寚閽堝彉閲忔病鏈夎鍒濆鍖栥備換浣曟寚閽堝彉閲忓垰琚垱寤烘椂涓嶄細(xì)鑷姩鎴愪負(fù)NULL鎸囬拡錛?br>瀹冪殑緙虹渷鍊兼槸闅忔満鐨勶紝瀹冧細(xì)涔辨寚涓姘斻傛墍浠ワ紝鎸囬拡鍙橀噺鍦ㄥ垱寤虹殑鍚屾椂搴斿綋琚垵濮嬪寲錛?br>瑕佷箞灝嗘寚閽堣緗負(fù)NULL錛岃涔堣瀹冩寚鍚戝悎娉曠殑鍐呭瓨銆備緥濡?br>char *p = NULL;
char *str = (char *) malloc(100);

錛?錛夋寚閽坧琚玣ree鎴栬卍elete涔嬪悗錛屾病鏈夌疆涓篘ULL錛岃浜鴻浠ヤ負(fù)p鏄釜鍚堟硶鐨勬寚閽堛傚弬瑙?.5鑺傘?/p>

錛?錛夋寚閽堟搷浣滆秴瓚婁簡鍙橀噺鐨勪綔鐢ㄨ寖鍥淬傝繖縐嶆儏鍐佃浜洪槻涓嶈儨闃詫紝紺轟緥紼嬪簭濡備笅錛?br>class A
{
public:
void Func(void){ cout << "Func of class A" << endl;
}

void Test(void)
{
A *p;
{
A a;
p = &a; // 娉ㄦ剰 a 鐨勭敓鍛芥湡
}
p->Func();// p鏄?閲庢寚閽?
}

鍑芥暟Test鍦ㄦ墽琛岃鍙->Func()鏃訛紝瀵硅薄a宸茬粡娑堝け錛岃宲鏄寚鍚慳鐨勶紝鎵浠灝辨垚浜?閲庢寚閽?銆?br>浣嗗鎬殑鏄垜榪愯榪欎釜紼嬪簭鏃跺眳鐒舵病鏈夊嚭閿欙紝榪欏彲鑳戒笌緙栬瘧鍣ㄦ湁鍏熾?/p>

 

8 鏈変簡malloc/free涓轟粈涔堣繕瑕乶ew/delete 錛?br>------------------------------------------
malloc涓巉ree鏄疌++/C璇█鐨勬爣鍑嗗簱鍑芥暟錛宯ew/delete鏄疌++鐨勮繍綆楃銆?br>瀹冧滑閮藉彲鐢ㄤ簬鐢寵鍔ㄦ佸唴瀛樺拰閲婃斁鍐呭瓨銆?/p>

瀵逛簬闈炲唴閮ㄦ暟鎹被鍨嬬殑瀵硅薄鑰岃█錛屽厜鐢╩aloc/free鏃犳硶婊¤凍鍔ㄦ佸璞$殑瑕佹眰銆?br>瀵硅薄鍦ㄥ垱寤虹殑鍚屾椂瑕佽嚜鍔ㄦ墽琛屾瀯閫犲嚱鏁幫紝瀵硅薄鍦ㄦ秷浜′箣鍓嶈鑷姩鎵ц鏋愭瀯鍑芥暟銆?br>鐢變簬malloc/free鏄簱鍑芥暟鑰屼笉鏄繍綆楃錛屼笉鍦ㄧ紪璇戝櫒鎺у埗鏉冮檺涔嬪唴錛?br>涓嶈兘澶熸妸鎵ц鏋勯犲嚱鏁板拰鏋愭瀯鍑芥暟鐨勪換鍔″己鍔犱簬malloc/free銆?br>
鍥犳C++璇█闇瑕佷竴涓兘瀹屾垚鍔ㄦ佸唴瀛樺垎閰嶅拰鍒濆鍖栧伐浣滅殑榪愮畻絎ew錛屼互鍙?qiáng)涓涓兘瀹屾垚娓呯悊涓庨噴鏀懼唴瀛樺伐浣滅殑榪?/font>

綆楃delete銆傛敞鎰弉ew/delete涓嶆槸搴撳嚱鏁般?br>鎴戜滑鍏堢湅涓鐪媘alloc/free鍜宯ew/delete濡備綍瀹炵幇瀵硅薄鐨勫姩鎬佸唴瀛樼鐞嗭紝瑙佺ず渚?銆?/p>

紺轟緥8 鐢╩alloc/free鍜宯ew/delete濡備綍瀹炵幇瀵硅薄鐨勫姩鎬佸唴瀛樼鐞?br>-------------------------------------------------------------
class Obj
{
public :
Obj(void){ cout << "Initialization" << endl; }
~Obj(void){cout << "Destroy" << endl; }
void Initialize(void){ cout << "Initialization" << endl; }
void    Destroy(void){ cout << "Destroy" << endl; }
};
void UseMallocFree(void)
{
Obj *a = (obj *)malloc(sizeof(obj)); // 鐢寵鍔ㄦ佸唴瀛?br>a->Initialize(); // 鍒濆鍖?br>a->Destroy(); // 娓呴櫎宸ヤ綔
free(a);// 閲婃斁鍐呭瓨
}
void UseNewDelete(void)
{
Obj *a = new Obj;// 鐢寵鍔ㄦ佸唴瀛樺茍涓斿垵濮嬪寲
delete a;// 娓呴櫎騫朵笖閲婃斁鍐呭瓨
}

綾籓bj鐨勫嚱鏁癐nitialize妯℃嫙浜嗘瀯閫犲嚱鏁扮殑鍔熻兘錛屽嚱鏁癉estroy妯℃嫙浜嗘瀽鏋勫嚱鏁扮殑鍔熻兘銆?br>鍑芥暟UseMallocFree涓紝鐢變簬malloc/free涓嶈兘鎵ц鏋勯犲嚱鏁頒笌鏋愭瀯鍑芥暟錛?br>蹇呴』璋冪敤鎴愬憳鍑芥暟Initialize鍜孌estroy鏉ュ畬鎴愬垵濮嬪寲涓庢竻闄ゅ伐浣溿?br>鍑芥暟UseNewDelete鍒欑畝鍗曞緱澶氥?/p>

鎵浠ユ垜浠笉瑕佷紒鍥劇敤malloc/free鏉ュ畬鎴愬姩鎬佸璞$殑鍐呭瓨綆$悊錛屽簲璇ョ敤new/delete銆?br>鐢變簬鍐呴儴鏁版嵁綾誨瀷鐨?瀵硅薄"娌℃湁鏋勯犱笌鏋愭瀯鐨勮繃紼嬶紝瀵瑰畠浠岃█malloc/free鍜宯ew/delete鏄瓑浠風(fēng)殑銆?br>
鏃㈢劧new/delete鐨勫姛鑳藉畬鍏ㄨ鐩栦簡malloc/free錛屼負(fù)浠涔圕++涓嶆妸malloc/free娣樻卑鍑哄眬鍛紵
榪欐槸鍥犱負(fù)C++紼嬪簭緇忓父瑕佽皟鐢–鍑芥暟錛岃孋紼嬪簭鍙兘鐢╩alloc/free綆$悊鍔ㄦ佸唴瀛樸?/p>

濡傛灉鐢╢ree閲婃斁"new鍒涘緩鐨勫姩鎬佸璞?錛岄偅涔堣瀵硅薄鍥犳棤娉曟墽琛屾瀽鏋勫嚱鏁拌屽彲鑳藉鑷寸▼搴忓嚭閿欍?br>濡傛灉鐢╠elete閲婃斁"malloc鐢寵鐨勫姩鎬佸唴瀛?錛岀悊璁轟笂璁茬▼搴忎笉浼?xì)鍑洪敊锛屼絾鏄绋嬪簭鐨勫彲璇绘у緢宸?br>鎵浠ew/delete蹇呴』閰嶅浣跨敤錛宮alloc/free涔熶竴鏍楓?/p>

 

9 鍐呭瓨鑰楀敖鎬庝箞鍔烇紵
------------------------------------------
濡傛灉鍦ㄧ敵璇峰姩鎬佸唴瀛樻椂鎵句笉鍒拌凍澶熷ぇ鐨勫唴瀛樺潡malloc鍜宯ew灝嗚繑鍥濶ULL鎸囬拡錛屽鍛婂唴瀛樼敵璇峰け璐ャ?br>閫氬父鏈変笁縐嶆柟寮忓鐞?鍐呭瓨鑰楀敖"闂銆?/p>

錛?錛夊垽鏂寚閽堟槸鍚︿負(fù)NULL錛屽鏋滄槸鍒欓┈涓婄敤return璇彞緇堟鏈嚱鏁般備緥濡傦細(xì)
void Func(void)
{
A *a = new A;
if(a == NULL)
{
   return;
}
...
}

錛?錛夊垽鏂寚閽堟槸鍚︿負(fù)NULL錛屽鏋滄槸鍒欓┈涓婄敤exit(1)緇堟鏁翠釜紼嬪簭鐨勮繍琛屻備緥濡傦細(xì)
void Func(void)
{
A *a = new A;
if(a == NULL)
{
   cout << "Memory Exhausted" << endl;
   exit(1);
}

...
}

錛?錛変負(fù)new鍜宮alloc璁劇疆寮傚父澶勭悊鍑芥暟銆?/p>

渚嬪Visual C++鍙互鐢╛set_new_hander鍑芥暟涓簄ew璁劇疆鐢ㄦ埛鑷繁瀹氫箟鐨勫紓甯稿鐞嗗嚱鏁幫紝
涔熷彲浠ヨmalloc浜敤涓巒ew鐩稿悓鐨勫紓甯稿鐞嗗嚱鏁般傝緇嗗唴瀹硅鍙傝僀++浣跨敤鎵嬪唽銆?/p>

涓婅堪錛?錛夛紙2錛夋柟寮忎嬌鐢ㄦ渶鏅亶銆傚鏋滀竴涓嚱鏁板唴鏈夊澶勯渶瑕佺敵璇峰姩鎬佸唴瀛橈紝
閭d箞鏂瑰紡錛?錛夊氨鏄懼緱鍔涗笉浠庡績錛堥噴鏀懼唴瀛樺緢楹葷儲錛夛紝搴旇鐢ㄦ柟寮忥紙2錛夋潵澶勭悊銆?/p>

寰堝浜轟笉蹇嶅績鐢╡xit(1)錛岄棶錛?涓嶇紪鍐欏嚭閿欏鐞嗙▼搴忥紝璁╂搷浣滅郴緇熻嚜宸辮В鍐寵涓嶈錛?
涓嶈銆?font style="BACKGROUND-COLOR: #ff0000">濡傛灉鍙戠敓"鍐呭瓨鑰楀敖"榪欐牱鐨勪簨鎯咃紝涓鑸鏉ュ簲鐢ㄧ▼搴忓凡緇忔棤鑽彲鏁戙?br>濡傛灉涓嶇敤exit(1) 鎶婂潖紼嬪簭鏉姝伙紝瀹冨彲鑳戒細(xì)瀹蟲鎿嶄綔緋葷粺銆?br>
閬撶悊濡傚悓錛氬鏋滀笉鎶婃寰掑嚮姣欙紝姝瑰緬鍦ㄨ佹涔嬪墠浼?xì)鐘笅鏇村鐨劸|?/p>

鏈変竴涓緢閲嶈鐨勭幇璞¤鍛婅瘔澶у銆傚浜?2浣嶄互涓婄殑搴旂敤紼嬪簭鑰岃█
錛屾棤璁烘庢牱浣跨敤malloc涓巒ew錛屽嚑涔庝笉鍙兘瀵艱嚧"鍐呭瓨鑰楀敖"銆?br>鎴戝湪Windows 98涓嬬敤Visual C++緙栧啓浜嗘祴璇曠▼搴忥紝瑙佺ず渚?銆?br>榪欎釜紼嬪簭浼?xì)鏃犱紤姝㈠湴杩愯涓嬪幓锛屾犚?guī)湰涓嶄細(xì)緇堟銆?br>鍥犱負(fù)32浣嶆搷浣滅郴緇熸敮鎸?铏氬瓨"錛屽唴瀛樼敤瀹屼簡錛岃嚜鍔ㄧ敤紜洏絀洪棿欏舵浛銆?br>鎴戝彧鍚埌紜洏鍢庡惐鍢庡惐鍦板搷錛學(xué)indow 98宸茬粡绱緱瀵歸敭鐩樸侀紶鏍囨鏃犲弽搴斻?/p>

鎴戝彲浠ュ緱鍑鴻繖涔堜竴涓粨璁猴細(xì)瀵逛簬32浣嶄互涓婄殑搴旂敤紼嬪簭錛?鍐呭瓨鑰楀敖"閿欒澶勭悊紼嬪簭姣棤鐢ㄥ銆傝繖涓嬪彲鎶奤nix鍜學(xué)indows紼嬪簭鍛樹滑涔愬潖浜嗭細(xì)鍙嶆閿欒澶勭悊紼嬪簭涓嶈搗浣滅敤錛屾垜灝變笉鍐欎簡錛岀渷浜嗗緢澶氶夯鐑︺?/p>

鎴戜笉鎯寵瀵艱鑰咃紝蹇呴』寮鴻皟錛氫笉鍔犻敊璇鐞嗗皢瀵艱嚧紼嬪簭鐨勮川閲忓緢宸紝鍗冧竾涓嶅彲鍥犲皬澶卞ぇ銆?/p>

紺轟緥9璇曞浘鑰楀敖鎿嶄綔緋葷粺鐨勫唴瀛?br>void main(void)
{
   float *p = NULL;
   while(TRUE)
   {
    p = new float[1000000];
    cout << "eat memory" << endl;
    if(p==NULL) exit(1);
   }
}

 

10 malloc/free 鐨勪嬌鐢ㄨ鐐?br>------------------------------------------
鍑芥暟malloc鐨勫師鍨嬪涓嬶細(xì)
void * malloc(size_t size);
鐢╩alloc鐢寵涓鍧楅暱搴︿負(fù)length鐨勬暣鏁扮被鍨嬬殑鍐呭瓨錛岀▼搴忓涓嬶細(xì)
int *p = (int *) malloc(sizeof(int) * length);
鎴戜滑搴斿綋鎶婃敞鎰忓姏闆嗕腑鍦ㄤ袱涓绱犱笂錛?綾誨瀷杞崲"鍜?sizeof"銆?br>malloc榪斿洖鍊肩殑綾誨瀷鏄痸oid *錛屾墍浠ュ湪璋冪敤malloc鏃惰鏄懼紡鍦拌繘琛岀被鍨嬭漿鎹紝
灝唙oid * 杞崲鎴愭墍闇瑕佺殑鎸囬拡綾誨瀷銆?br>malloc鍑芥暟鏈韓騫朵笉璇嗗埆瑕佺敵璇風(fēng)殑鍐呭瓨鏄粈涔堢被鍨嬶紝瀹冨彧鍏沖績鍐呭瓨鐨勬誨瓧鑺傛暟銆?br>鎴戜滑閫氬父璁頒笉浣廼nt,float絳夋暟鎹被鍨嬬殑鍙橀噺鐨勭‘鍒囧瓧鑺傛暟銆備緥濡俰nt鍙橀噺鍦?6浣嶇郴緇熶笅鏄?涓瓧鑺?br>錛屽湪32浣嶄笅鏄?涓瓧鑺傦紱鑰宖loat鍙橀噺鍦?6浣嶇郴緇熶笅鏄?涓瓧鑺傦紝鍦?2浣嶄笅涔熸槸4涓瓧鑺傘?/p>

鏈濂界敤浠ヤ笅紼嬪簭浣滀竴嬈℃祴璇曪細(xì)
cout << sizeof(char) << endl;
cout << sizeof(int) << endl;
cout << sizeof(unsigned int) << endl;
cout << sizeof(long) << endl;
cout << sizeof(unsigned long) << endl;
cout << sizeof(float) << endl;
cout << sizeof(double) << endl;
cout << sizeof(void *) << endl;

鍦╩alloc鐨?()"涓嬌鐢╯izeof榪愮畻絎︽槸鑹ソ鐨勯鏍鹼紝浣嗚褰撳績鏈夋椂鎴戜滑浼?xì)鏄忎簡澶村Q屽啓鍑?p = malloc(sizeof(p))榪欐牱鐨勭▼搴忔潵銆?/p>

鍑芥暟free鐨勫師鍨嬪涓嬶細(xì)

void free( void * memblock );

涓轟粈涔坒ree鍑芥暟涓嶈薄malloc鍑芥暟閭f牱澶嶆潅鍛紵榪欐槸鍥犱負(fù)鎸囬拡p鐨勭被鍨嬩互鍙?qiáng)瀹冩墍鎸囩殑鍐呭瓨鐨勫閲忎簨鍏堥兘鏄煡閬撶殑錛岃鍙ree(p)鑳芥紜湴閲婃斁鍐呭瓨銆傚鏋減鏄疦ULL鎸囬拡錛岄偅涔坒ree瀵筽鏃犺鎿嶄綔澶氬皯嬈¢兘涓嶄細(xì)鍑洪棶棰樸?br>濡傛灉p涓嶆槸NULL鎸囬拡錛岄偅涔坒ree瀵筽榪炵畫鎿嶄綔涓ゆ灝變細(xì)瀵艱嚧紼嬪簭榪愯閿欒銆?/p>

 

11 new/delete 鐨勪嬌鐢ㄨ鐐?br>------------------------------------------
榪愮畻絎ew浣跨敤璧鋒潵瑕佹瘮鍑芥暟malloc綆鍗曞緱澶氾紝渚嬪錛?br>int *p1 = (int *)malloc(sizeof(int) * length);
int *p2 = new int[length];
榪欐槸鍥犱負(fù)new鍐呯疆浜唖izeof銆佺被鍨嬭漿鎹㈠拰綾誨瀷瀹夊叏媯鏌ュ姛鑳姐傚浜庨潪鍐呴儴鏁版嵁綾誨瀷鐨勫璞¤岃█錛?br>new鍦ㄥ垱寤哄姩鎬佸璞$殑鍚屾椂瀹屾垚浜嗗垵濮嬪寲宸ヤ綔銆?br>濡傛灉瀵硅薄鏈夊涓瀯閫犲嚱鏁幫紝閭d箞new鐨勮鍙ヤ篃鍙互鏈夊縐嶅艦寮忋?br>渚嬪
class Obj
{
public :
Obj(void); // 鏃犲弬鏁扮殑鏋勯犲嚱鏁?br>Obj(int x); // 甯︿竴涓弬鏁扮殑鏋勯犲嚱鏁?br>...
}
void Test(void)
{
Obj *a = new Obj;
Obj *b = new Obj(1); // 鍒濆間負(fù)1
...
delete a;
delete b;
}
濡傛灉鐢╪ew鍒涘緩瀵硅薄鏁扮粍錛岄偅涔堝彧鑳戒嬌鐢ㄥ璞$殑鏃犲弬鏁版瀯閫犲嚱鏁般備緥濡?br>Obj *objects = new Obj[100]; // 鍒涘緩100涓姩鎬佸璞?br>涓嶈兘鍐欐垚
Obj *objects = new Obj[100](1);// 鍒涘緩100涓姩鎬佸璞$殑鍚屾椂璧嬪垵鍊?
鍦ㄧ敤delete閲婃斁瀵硅薄鏁扮粍鏃訛紝鐣欐剰涓嶈涓簡絎﹀彿‘[]'銆備緥濡?br>delete []objects; // 姝g‘鐨勭敤娉?br>delete objects; // 閿欒鐨勭敤娉?br>鍚庤呯浉褰撲簬delete objects[0]錛屾紡鎺変簡鍙﹀99涓璞°?/p>

Bluesea 2009-07-18 20:08 鍙戣〃璇勮
]]>
榪涘埗杞崲紼嬪簭http://m.shnenglu.com/finehai/archive/2009/07/18/90452.htmlBlueseaBlueseaSat, 18 Jul 2009 12:05:00 GMThttp://m.shnenglu.com/finehai/archive/2009/07/18/90452.htmlhttp://m.shnenglu.com/finehai/comments/90452.htmlhttp://m.shnenglu.com/finehai/archive/2009/07/18/90452.html#Feedback0http://m.shnenglu.com/finehai/comments/commentRss/90452.htmlhttp://m.shnenglu.com/finehai/services/trackbacks/90452.html#include<iostream>
#include <algorithm>
using namespace std;

char * change(int n, int base)
{
  char *p, *val;
  if(base<2||base>36)
   return NULL;
  val = (char *) malloc(40);
  if(!val)
   return NULL;
  p=val;
  while( n)

  {
   *p= (n%base)>9? n%base-10+'a':n%base+'0';
   n/=base;
   ++p;
  }

  reverse(val,p);
  *p='\0';
  ++p;
  return val;
}

 int main(int argc, char* argv[])
 {
  char * test;
  int n,base;
  while(cin>>n>>base)
  {
   test=change(n,base);
   if(test){
    cout<<"Change "<<n<<" to base "<<base<<" = "<<test<<endl;
    free(test);
   }
   else
    cout<<"Wrong input."<<endl;
  }
  return 0;
 }



Bluesea 2009-07-18 20:05 鍙戣〃璇勮
]]>
windows涓嬪綰跨▼闂http://m.shnenglu.com/finehai/archive/2009/07/18/90449.htmlBlueseaBlueseaSat, 18 Jul 2009 11:37:00 GMThttp://m.shnenglu.com/finehai/archive/2009/07/18/90449.htmlhttp://m.shnenglu.com/finehai/comments/90449.htmlhttp://m.shnenglu.com/finehai/archive/2009/07/18/90449.html#Feedback0http://m.shnenglu.com/finehai/comments/commentRss/90449.htmlhttp://m.shnenglu.com/finehai/services/trackbacks/90449.html閿佺殑姒傚康 鍘熷瓙鎿嶄綔 淇″彿閲?nbsp; 涓寸晫鍖?綰跨▼鍚屾

姝婚攣錛?/p>

鏋勬垚姝婚攣鐨勬潯浠跺洓涓紝緙轟竴涓嶅彲

1涓涓嚎紼嬪彧鑳藉崟鐙敤涓涓祫婧?/p>

2姝e湪浣跨敤鐨勮祫婧愬彲浠ョ敵璇峰叾浠栬祫婧愶紝鍚屾椂鑷繁鐨勪笉浼?xì)鏀惧紑

3鍙湁鐢寵鍒板叾浠栬祫婧愶紝榪欎釜綰跨▼鎵嶄細(xì)鏀懼紑

4鍚勪釜綰跨▼鏄驚鐜姸鎬侊紝灝辨槸姣忎釜綰跨▼瑕佹寜鐓т竴瀹氱殑欏哄簭鐢寵錛岀劧鍚庢渶鍚庢垚涓轟竴涓幆銆?/p>

鍘熷瓙鎿嶄綔錛氬氨鏄笉鍙互鏈変腑鏂殑鎿嶄綔

淇″彿閲?涓巔v鏈夊叧錛岃〃紺鴻祫婧愮殑鍒嗛厤鍜岄噴鏀劇殑鎯呭喌銆備俊鍙稴錛宲鍒檚錛?錛寁鍒檚錛?銆俿琛ㄧず鍙互浣跨敤鐨勮繘紼嬬殑鏁扮洰銆傚鏋渟>0琛ㄧず榪樻湁榪涚▼鍙互浣跨敤錛岃皟鐢╬鍒欏垎閰嶄簡璧勬簮錛岄偅涔坰錛?錛宻<0琛ㄧず娌℃湁浜嗚祫婧愬彲浠ヤ嬌鐢紝鎴栬呴渶瑕侀噴鏀劇殑璧勬簮銆?璋冪敤v鎿嶄綔錛岃〃紺洪噴鏀劇殑璧勬簮錛屽洜姝錛?銆傝皟鐢≒鎿嶄綔嫻嬭瘯娑堟伅鏄惁鍒拌揪錛岃皟鐢╒鎿嶄綔鍙戦佹秷鎭?/p>

閮芥槸璁捐鍒板悓姝ュ拰浜掓枼姒傚康鐨勪笢瑗褲?/p>

涓寸晫鍖猴細(xì)灝辨槸鍦╬錛坰錛夊拰v錛坰錛変箣闂寸殑涓縐嶇姸鎬併?/p>

綰跨▼鍚屾錛?/p>

銆浣塊毝灞炰簬鍚屼竴榪涚▼鐨勫悇綰跨▼鍗忚皟涓鑷村湴宸ヤ綔縐頒負(fù)綰跨▼鐨勫悓姝?/p>

  • 涓寸晫鍖猴紙CCriticalSection錛?
  • 浜嬩歡錛圕Event錛?
  • 浜掓枼閲忥紙CMutex錛?
  • 淇″彿閲忥紙CSemaphore錛?

    A銆佷嬌鐢?CCriticalSection 綾?

    銆銆褰撳涓嚎紼嬭闂竴涓嫭鍗犳у叡浜祫婧愭椂,鍙互浣跨敤“涓寸晫鍖?#8221;瀵硅薄銆備換涓鏃跺埢鍙湁涓涓嚎紼嬪彲浠ユ嫢鏈変復(fù)鐣屽尯瀵硅薄錛屾嫢鏈変復(fù)鐣屽尯鐨勭嚎紼嬪彲浠ヨ闂淇濇姢璧鋒潵鐨勮祫婧愭垨浠g爜孌碉紝鍏朵粬甯屾湜榪涘叆涓寸晫鍖虹殑綰跨▼灝嗚鎸傝搗絳夊緟錛岀洿鍒版嫢鏈変復(fù)鐣屽尯鐨勭嚎紼嬫斁寮冧復(fù)鐣屽尯鏃朵負(fù)姝紝榪欐牱灝變繚璇佷簡涓嶄細(xì)鍦ㄥ悓涓鏃跺埢鍑虹幇澶氫釜綰跨▼璁塊棶鍏變韓璧勬簮銆?br>
    CCriticalSection綾葷殑鐢ㄦ硶闈炲父綆鍗曪紝姝ラ濡備笅錛?br>銆

    1. 瀹氫箟CCriticalSection綾葷殑涓涓叏灞瀵硅薄錛堜互浣垮悇涓嚎紼嬪潎鑳借闂級錛屽CCriticalSection critical_section錛?
    2. 鍦ㄨ闂渶瑕佷繚鎶ょ殑璧勬簮鎴栦唬鐮佷箣鍓嶏紝璋冪敤CCriticalSection綾葷殑鎴愬憳Lock錛堬級鑾峰緱涓寸晫鍖哄璞★細(xì)
      critical_section.Lock();
      鍦ㄧ嚎紼嬩腑璋冪敤璇ュ嚱鏁版潵浣跨嚎紼嬭幏寰楀畠鎵璇鋒眰鐨勪復(fù)鐣屽尯銆傚鏋滄鏃舵病鏈夊叾瀹冪嚎紼嬪崰鏈変復(fù)鐣屽尯瀵硅薄錛屽垯璋冪敤Lock()鐨勭嚎紼嬭幏寰椾復(fù)鐣屽尯錛涘惁鍒欙紝綰跨▼灝嗚鎸傝搗錛屽茍鏀懼叆鍒頒竴涓郴緇熼槦鍒椾腑絳夊緟錛岀洿鍒板綋鍓嶆嫢鏈変復(fù)鐣屽尯鐨勭嚎紼嬮噴鏀句簡涓寸晫鍖烘椂涓烘銆?
    3. 璁塊棶涓寸晫鍖哄畬姣曞悗錛屼嬌鐢–CriticalSection鐨勬垚鍛樺嚱鏁癠nlock()鏉ラ噴鏀句復(fù)鐣屽尯錛?
      critical_section.Unlock();
      鍐嶉氫織涓鐐硅錛屽氨鏄嚎紼婣鎵ц鍒癱ritical_section.Lock();璇彞鏃訛紝濡傛灉鍏跺畠綰跨▼(B)姝e湪鎵цcritical_section.Lock();璇彞鍚庝笖critical_section. Unlock();璇彞鍓嶇殑璇彞鏃訛紝綰跨▼A灝變細(xì)絳夊緟錛岀洿鍒扮嚎紼婤鎵ц瀹宑ritical_section. Unlock();璇彞錛岀嚎紼婣鎵嶄細(xì)緇х畫鎵ц銆?

    涓嬮潰鍐嶉氳繃涓涓疄渚嬭繘琛屾紨紺鴻鏄庛?/p>


    渚嬬▼8 MultiThread8

    1. 寤虹珛涓涓熀浜庡璇濇鐨勫伐紼婱ultiThread8錛屽湪瀵硅瘽妗咺DD_MULTITHREAD8_DIALOG涓姞鍏ヤ袱涓寜閽拰涓や釜緙栬緫妗嗘帶浠訛紝涓や釜鎸夐挳鐨処D鍒嗗埆涓篒DC_WRITEW鍜孖DC_WRITED錛屾爣棰樺垎鍒負(fù)“鍐?#8216;W’”鍜?#8220;鍐?#8216;D’”錛涗袱涓紪杈戞鐨処D鍒嗗埆涓篒DC_W鍜孖DC_D錛屽睘鎬ч兘閫変腑Read-only錛?
    2. 鍦∕ultiThread8Dlg.h鏂囦歡涓0鏄庝袱涓嚎紼嬪嚱鏁幫細(xì)
      UINT WriteW(LPVOID pParam);
          UINT WriteD(LPVOID pParam);
    3. 浣跨敤ClassWizard鍒嗗埆緇橧DC_W鍜孖DC_D娣誨姞CEdit綾誨彉閲弇_ctrlW鍜宮_ctrlD錛?
    4. 鍦∕ultiThread8Dlg.cpp鏂囦歡涓坊鍔犲涓嬪唴瀹癸細(xì)

      涓轟簡鏂囦歡涓兘澶熸紜嬌鐢ㄥ悓姝ョ被錛屽湪鏂囦歡寮澶存坊鍔狅細(xì)
      #include "afxmt.h"
      瀹氫箟涓寸晫鍖哄拰涓涓瓧絎︽暟緇勶紝涓轟簡鑳藉鍦ㄤ笉鍚岀嚎紼嬮棿浣跨敤錛屽畾涔変負(fù)鍏ㄥ眬鍙橀噺錛?
      CCriticalSection critical_section;
          char g_Array[10];
      娣誨姞綰跨▼鍑芥暟錛?
      UINT WriteW(LPVOID pParam)
          {
          CEdit *pEdit=(CEdit*)pParam;
          pEdit->SetWindowText("");
          critical_section.Lock();
          //閿佸畾涓寸晫鍖猴紝鍏跺畠綰跨▼閬囧埌critical_section.Lock();璇彞鏃惰絳夊緟
          //鐩磋嚦鎵цcritical_section.Unlock();璇彞
          for(int i=0;i<10;i++)
          {
          g_Array[i]=''W'';
          pEdit->SetWindowText(g_Array);
          Sleep(1000);
          }
          critical_section.Unlock();
          return 0;
          }
          UINT WriteD(LPVOID pParam)
          {
          CEdit *pEdit=(CEdit*)pParam;
          pEdit->SetWindowText("");
          critical_section.Lock();
          //閿佸畾涓寸晫鍖猴紝鍏跺畠綰跨▼閬囧埌critical_section.Lock();璇彞鏃惰絳夊緟
          //鐩磋嚦鎵цcritical_section.Unlock();璇彞
          for(int i=0;i<10;i++)
          {
          g_Array[i]=''D'';
          pEdit->SetWindowText(g_Array);
          Sleep(1000);
          }
          critical_section.Unlock();
          return 0;
          }
    5. 鍒嗗埆鍙屽嚮鎸夐挳IDC_WRITEW鍜孖DC_WRITED錛屾坊鍔犲叾鍝嶅簲鍑芥暟錛?
      void CMultiThread8Dlg::OnWritew()
          {
          CWinThread *pWriteW=AfxBeginThread(WriteW,
          &m_ctrlW,
          THREAD_PRIORITY_NORMAL,
          0,
          CREATE_SUSPENDED);
          pWriteW->ResumeThread();
          }
          void CMultiThread8Dlg::OnWrited()
          {
          CWinThread *pWriteD=AfxBeginThread(WriteD,
          &m_ctrlD,
          THREAD_PRIORITY_NORMAL,
          0,
          CREATE_SUSPENDED);
          pWriteD->ResumeThread();
          }
      鐢變簬浠g爜杈冪畝鍗曪紝涓嶅啀璇﹁堪銆傜紪璇戙佽繍琛岃渚嬬▼錛屾?zhèn)ㄥ彲浠q炵畫鐐瑰嚮涓や釜鎸夐挳錛岃瀵熶綋浼?xì)鋸?fù)鐣岀被鐨勪綔鐢ㄣ?

    B銆佷嬌鐢?CEvent 綾?

    銆銆CEvent 綾繪彁渚涗簡瀵逛簨浠剁殑鏀寔銆備簨浠舵槸涓涓厑璁鎬竴涓嚎紼嬪湪鏌愮鎯呭喌鍙戠敓鏃訛紝鍞ら啋鍙﹀涓涓嚎紼嬬殑鍚屾瀵硅薄銆備緥濡傚湪鏌愪簺緗戠粶搴旂敤紼嬪簭涓紝涓涓嚎紼嬶紙璁頒負(fù)A錛夎礋璐g洃鍚氳绔彛錛屽彟澶栦竴涓嚎紼嬶紙璁頒負(fù)B錛夎礋璐f洿鏂扮敤鎴鋒暟鎹傞氳繃浣跨敤CEvent 綾伙紝綰跨▼A鍙互閫氱煡綰跨▼B浣曟椂鏇存柊鐢ㄦ埛鏁版嵁銆傛瘡涓涓狢Event 瀵硅薄鍙互鏈変袱縐嶇姸鎬侊細(xì)鏈変俊鍙風(fēng)姸鎬佸拰鏃犱俊鍙風(fēng)姸鎬併傜嚎紼嬬洃瑙嗕綅浜庡叾涓殑CEvent 綾誨璞$殑鐘舵侊紝騫跺湪鐩稿簲鐨勬椂鍊欓噰鍙栫浉搴旂殑鎿嶄綔銆?br>銆銆鍦∕FC涓紝CEvent 綾誨璞℃湁涓ょ綾誨瀷錛氫漢宸ヤ簨浠跺拰鑷姩浜嬩歡銆備竴涓嚜鍔–Event 瀵硅薄鍦ㄨ鑷沖皯涓涓嚎紼嬮噴鏀懼悗浼?xì)鑷姩杩斿洖鍒版棤淇″忥L(fēng)姸鎬侊紱鑰屼漢宸ヤ簨浠跺璞¤幏寰椾俊鍙峰悗錛岄噴鏀懼彲鍒╃敤綰跨▼錛屼絾鐩村埌璋冪敤鎴愬憳鍑芥暟ReSetEvent()鎵嶅皢鍏惰緗負(fù)鏃犱俊鍙風(fēng)姸鎬併傚湪鍒涘緩CEvent 綾葷殑瀵硅薄鏃訛紝榛樿鍒涘緩鐨勬槸鑷姩浜嬩歡銆?CEvent 綾葷殑鍚勬垚鍛樺嚱鏁扮殑鍘熷瀷鍜屽弬鏁拌鏄庡涓嬶細(xì)

    1銆丆Event(BOOL bInitiallyOwn=FALSE,
    BOOL bManualReset=FALSE,
    LPCTSTR lpszName=NULL,
    LPSECURITY_ATTRIBUTES lpsaAttribute=NULL);

    • bInitiallyOwn:鎸囧畾浜嬩歡瀵硅薄鍒濆鍖栫姸鎬侊紝TRUE涓烘湁淇″彿錛孎ALSE涓烘棤淇″彿錛?
    • bManualReset錛氭寚瀹氳鍒涘緩鐨勪簨浠舵槸灞炰簬浜哄伐浜嬩歡榪樻槸鑷姩浜嬩歡銆俆RUE涓轟漢宸ヤ簨浠訛紝FALSE涓鴻嚜鍔ㄤ簨浠訛紱
    • 鍚庝袱涓弬鏁頒竴鑸涓篘ULL錛屽湪姝や笉浣滆繃澶氳鏄庛?
    2銆丅OOL CEvent錛氾細(xì)SetEvent();

    銆銆灝?CEvent 綾誨璞$殑鐘舵佽緗負(fù)鏈変俊鍙風(fēng)姸鎬併傚鏋滀簨浠舵槸浜哄伐浜嬩歡錛屽垯 CEvent 綾誨璞′繚鎸佷負(fù)鏈変俊鍙風(fēng)姸鎬侊紝鐩村埌璋冪敤鎴愬憳鍑芥暟ResetEvent()灝?鍏墮噸鏂拌涓烘棤淇″彿鐘舵佹椂涓烘銆傚鏋淐Event 綾誨璞′負(fù)鑷姩浜嬩歡錛屽垯鍦⊿etEvent()灝嗕簨浠惰緗負(fù)鏈変俊鍙風(fēng)姸鎬佸悗錛孋Event 綾誨璞$敱緋葷粺鑷姩閲嶇疆涓烘棤淇″彿鐘舵併?br>
    濡傛灉璇ュ嚱鏁版墽琛屾垚鍔燂紝鍒欒繑鍥為潪闆跺鹼紝鍚﹀垯榪斿洖闆躲?/p>

    3銆丅OOL CEvent錛氾細(xì)ResetEvent();

    銆銆璇ュ嚱鏁板皢浜嬩歡鐨勭姸鎬佽緗負(fù)鏃犱俊鍙風(fēng)姸鎬侊紝騫朵繚鎸佽鐘舵佺洿鑷砈etEvent()琚皟鐢ㄦ椂涓烘銆傜敱浜庤嚜鍔ㄤ簨浠舵槸鐢辯郴緇熻嚜鍔ㄩ噸緗紝鏁呰嚜鍔ㄤ簨浠朵笉闇瑕佽皟鐢ㄨ鍑芥暟銆傚鏋滆鍑芥暟鎵ц鎴愬姛錛岃繑鍥為潪闆跺鹼紝鍚﹀垯榪斿洖闆躲傛垜浠竴鑸氳繃璋冪敤WaitForSingleObject鍑芥暟鏉ョ洃瑙嗕簨浠剁姸鎬併傚墠闈㈡垜浠凡緇忎粙緇嶄簡璇ュ嚱鏁般傜敱浜庤璦鎻忚堪鐨勫師鍥狅紝CEvent 綾葷殑鐞嗚В紜疄鏈変簺闅懼害錛屼絾鎮(zhèn)ㄥ彧瑕侀氳繃浠旂粏鐜╁懗涓嬮潰渚嬬▼錛屽鐪嬪嚑閬嶅氨鍙悊瑙c?/p>

    渚嬬▼9 MultiThread9

    1. 寤虹珛涓涓熀浜庡璇濇鐨勫伐紼婱ultiThread9錛屽湪瀵硅瘽妗咺DD_MULTITHREAD9_DIALOG涓姞鍏ヤ竴涓寜閽拰涓や釜緙栬緫妗嗘帶浠訛紝鎸夐挳鐨処D涓篒DC_WRITEW錛屾爣棰樹負(fù)“鍐?#8216;W’”錛涗袱涓紪杈戞鐨処D鍒嗗埆涓篒DC_W鍜孖DC_D錛屽睘鎬ч兘閫変腑Read-only;
    2. 鍦∕ultiThread9Dlg.h鏂囦歡涓0鏄庝袱涓嚎紼嬪嚱鏁幫細(xì)
      UINT WriteW(LPVOID pParam);
          UINT WriteD(LPVOID pParam);
    3. 浣跨敤ClassWizard鍒嗗埆緇橧DC_W鍜孖DC_D娣誨姞CEdit綾誨彉閲弇_ctrlW鍜宮_ctrlD錛?
    4. 鍦∕ultiThread9Dlg.cpp鏂囦歡涓坊鍔犲涓嬪唴瀹癸細(xì)

      涓轟簡鏂囦歡涓兘澶熸紜嬌鐢ㄥ悓姝ョ被錛屽湪鏂囦歡寮澶存坊鍔?/p>

      #include "afxmt.h"
      瀹氫箟浜嬩歡瀵硅薄鍜屼竴涓瓧絎︽暟緇勶紝涓轟簡鑳藉鍦ㄤ笉鍚岀嚎紼嬮棿浣跨敤錛屽畾涔変負(fù)鍏ㄥ眬鍙橀噺銆?
      CEvent eventWriteD;
          char g_Array[10];
      娣誨姞綰跨▼鍑芥暟錛?
      UINT WriteW(LPVOID pParam)
          {
          CEdit *pEdit=(CEdit*)pParam;
          pEdit->SetWindowText("");
          for(int i=0;i<10;i++)
          {
          g_Array[i]=''W'';
          pEdit->SetWindowText(g_Array);
          Sleep(1000);
          }
          eventWriteD.SetEvent();
          return 0;
          }
          UINT WriteD(LPVOID pParam)
          {
          CEdit *pEdit=(CEdit*)pParam;
          pEdit->SetWindowText("");
          WaitForSingleObject(eventWriteD.m_hObject,INFINITE);
          for(int i=0;i<10;i++)
          {
          g_Array[i]=''D'';
          pEdit->SetWindowText(g_Array);
          Sleep(1000);
          }
          return 0;
          }
      銆銆浠旂粏鍒嗘瀽榪欎袱涓嚎紼嬪嚱鏁? 鎮(zhèn)ㄥ氨浼?xì)姝<嫯鐞嗚ВCEvent 綾匯傜嚎紼媁riteD鎵ц鍒?WaitForSingleObject(eventWriteD.m_hObject,INFINITE);澶勭瓑寰咃紝鐩村埌浜嬩歡eventWriteD涓烘湁淇″彿璇ョ嚎紼嬫墠寰涓嬫墽琛岋紝鍥犱負(fù)eventWriteD瀵硅薄鏄嚜鍔ㄤ簨浠訛紝鍒欏綋WaitForSingleObject()榪斿洖鏃訛紝緋葷粺鑷姩鎶奺ventWriteD瀵硅薄閲嶇疆涓烘棤淇″彿鐘舵併?
    5. 鍙屽嚮鎸夐挳IDC_WRITEW錛屾坊鍔犲叾鍝嶅簲鍑芥暟錛?
      void CMultiThread9Dlg::OnWritew()
          {
          CWinThread *pWriteW=AfxBeginThread(WriteW,
          &m_ctrlW,
          THREAD_PRIORITY_NORMAL,
          0,
          CREATE_SUSPENDED);
          pWriteW->ResumeThread();
          CWinThread *pWriteD=AfxBeginThread(WriteD,
          &m_ctrlD,
          THREAD_PRIORITY_NORMAL,
          0,
          CREATE_SUSPENDED);
          pWriteD->ResumeThread();
          }
      緙栬瘧騫惰繍琛岀▼搴忥紝鍗曞嚮“鍐?#8216;W’”鎸夐挳錛屼綋浼?xì)浜嬩欢瀵硅薄鐨勪綔鐢ㄣ?

    C銆佷嬌鐢–Mutex 綾?/p>

    銆銆浜掓枼瀵硅薄涓庝復(fù)鐣屽尯瀵硅薄寰堝儚.浜掓枼瀵硅薄涓庝復(fù)鐣屽尯瀵硅薄鐨勪笉鍚屽湪浜?浜掓枼瀵硅薄鍙互鍦ㄨ繘紼嬮棿浣跨敤,鑰屼復(fù)鐣屽尯瀵硅薄鍙兘鍦ㄥ悓涓榪涚▼鐨勫悇綰跨▼闂翠嬌鐢ㄣ傚綋鐒訛紝浜掓枼瀵硅薄涔熷彲浠ョ敤浜庡悓涓榪涚▼鐨勫悇涓嚎紼嬮棿錛屼絾鏄湪榪欑鎯呭喌涓嬶紝浣跨敤涓寸晫鍖轟細(xì)鏇磋妭鐪佺郴緇熻祫婧愶紝鏇存湁鏁堢巼銆?/p>

    D銆佷嬌鐢–Semaphore 綾?/p>

    銆銆褰撻渶瑕佷竴涓鏁板櫒鏉ラ檺鍒跺彲浠ヤ嬌鐢ㄦ煇涓嚎紼嬬殑鏁扮洰鏃訛紝鍙互浣跨敤“淇″彿閲?#8221;瀵硅薄銆侰Semaphore 綾葷殑瀵硅薄淇濆瓨浜嗗褰撳墠璁塊棶鏌愪竴鎸囧畾璧勬簮鐨勭嚎紼嬬殑璁℃暟鍊鹼紝璇ヨ鏁板兼槸褰撳墠榪樺彲浠ヤ嬌鐢ㄨ璧勬簮鐨勭嚎紼嬬殑鏁扮洰銆傚鏋滆繖涓鏁拌揪鍒頒簡闆訛紝鍒欐墍鏈夊榪欎釜CSemaphore 綾誨璞℃墍鎺у埗鐨勮祫婧愮殑璁塊棶灝濊瘯閮借鏀懼叆鍒頒竴涓槦鍒椾腑絳夊緟錛岀洿鍒拌秴鏃舵垨璁℃暟鍊間笉涓洪浂鏃朵負(fù)姝€備竴涓嚎紼嬭閲婃斁宸茶闂簡琚繚鎶ょ殑璧勬簮鏃訛紝璁℃暟鍊煎噺1錛涗竴涓嚎紼嬪畬鎴愪簡瀵硅鎺у叡浜祫婧愮殑璁塊棶鏃訛紝璁℃暟鍊煎1銆傝繖涓CSemaphore 綾誨璞℃墍鎺у埗鐨勮祫婧愬彲浠ュ悓鏃舵帴鍙楄闂殑鏈澶х嚎紼嬫暟鍦ㄨ瀵硅薄鐨勬瀯寤哄嚱鏁頒腑鎸囧畾銆?br>
    CSemaphore 綾葷殑鏋勯犲嚱鏁板師鍨嬪強(qiáng)鍙傛暟璇存槑濡備笅錛?/p>

    CSemaphore (LONG lInitialCount=1,
    LONG lMaxCount=1,
    LPCTSTR pstrName=NULL,
    LPSECURITY_ATTRIBUTES lpsaAttributes=NULL);
    • lInitialCount:淇″彿閲忓璞$殑鍒濆璁℃暟鍊鹼紝鍗沖彲璁塊棶綰跨▼鏁扮洰鐨勫垵濮嬪鹼紱
    • lMaxCount錛氫俊鍙烽噺瀵硅薄璁℃暟鍊肩殑鏈澶у鹼紝璇ュ弬鏁板喅瀹氫簡鍚屼竴鏃跺埢鍙闂敱淇″彿閲忎繚鎶ょ殑璧勬簮鐨勭嚎紼嬫渶澶ф暟鐩紱
    • 鍚庝袱涓弬鏁板湪鍚屼竴榪涚▼涓嬌鐢ㄤ竴鑸負(fù)NULL錛屼笉浣滆繃澶氳璁猴紱

    銆銆鍦ㄧ敤CSemaphore 綾葷殑鏋勯犲嚱鏁板垱寤轟俊鍙烽噺瀵硅薄鏃惰鍚屾椂鎸囧嚭鍏佽鐨勬渶澶ц祫婧愯鏁板拰褰撳墠鍙敤璧勬簮璁℃暟銆備竴鑸槸灝嗗綋鍓嶅彲鐢ㄨ祫婧愯鏁拌緗負(fù)鏈澶ц祫婧愯鏁幫紝姣忓鍔犱竴涓嚎紼嬪鍏變韓璧勬簮鐨勮闂紝褰撳墠鍙敤璧勬簮璁℃暟灝變細(xì)鍑?錛屽彧瑕佸綋鍓嶅彲鐢ㄨ祫婧愯鏁版槸澶т簬0鐨勶紝灝卞彲浠ュ彂鍑轟俊鍙烽噺淇″彿銆備絾鏄綋鍓嶅彲鐢ㄨ鏁板噺灝忓埌0鏃訛紝鍒欒鏄庡綋鍓嶅崰鐢ㄨ祫婧愮殑綰跨▼鏁板凡緇忚揪鍒頒簡鎵鍏佽鐨勬渶澶ф暟鐩紝涓嶈兘鍐嶅厑璁稿叾瀹冪嚎紼嬬殑榪涘叆錛屾鏃剁殑淇″彿閲忎俊鍙峰皢鏃犳硶鍙戝嚭銆傜嚎紼嬪湪澶勭悊瀹屽叡浜祫婧愬悗錛屽簲鍦ㄧ寮鐨勫悓鏃墮氳繃ReleaseSemaphore()鍑芥暟灝嗗綋鍓嶅彲鐢ㄨ祫婧愭暟鍔?銆?/p>

    涓嬮潰緇欏嚭涓涓畝鍗曞疄渚嬫潵璇存槑 CSemaphore 綾葷殑鐢ㄦ硶銆?/p>

    渚嬬▼10 MultiThread10

    1. 寤虹珛涓涓熀浜庡璇濇鐨勫伐紼婱ultiThread10錛屽湪瀵硅瘽妗咺DD_MULTITHREAD10_DIALOG涓姞鍏ヤ竴涓寜閽拰涓変釜緙栬緫妗嗘帶浠訛紝鎸夐挳鐨処D涓篒DC_START錛屾爣棰樹負(fù)“鍚屾椂鍐?#8216;A’銆?#8216;B’銆?#8216;C’”錛涗笁涓紪杈戞鐨処D鍒嗗埆涓篒DC_A銆両DC_B鍜孖DC_C錛屽睘鎬ч兘閫変腑Read-only錛?
    2. 鍦∕ultiThread10Dlg.h鏂囦歡涓0鏄庝袱涓嚎紼嬪嚱鏁幫細(xì)
      UINT WriteA(LPVOID pParam);
          UINT WriteB(LPVOID pParam);
          UINT WriteC(LPVOID pParam);
    3. 浣跨敤ClassWizard鍒嗗埆緇橧DC_A銆両DC_B鍜孖DC_C娣誨姞CEdit綾誨彉閲弇_ctrlA銆乵_ctrlB鍜宮_ctrlC錛?
    4. 鍦∕ultiThread10Dlg.cpp鏂囦歡涓坊鍔犲涓嬪唴瀹癸細(xì)

      涓轟簡鏂囦歡涓兘澶熸紜嬌鐢ㄥ悓姝ョ被錛屽湪鏂囦歡寮澶存坊鍔狅細(xì)

      #include "afxmt.h"
      瀹氫箟淇″彿閲忓璞″拰涓涓瓧絎︽暟緇勶紝涓轟簡鑳藉鍦ㄤ笉鍚岀嚎紼嬮棿浣跨敤錛屽畾涔変負(fù)鍏ㄥ眬鍙橀噺錛?
      CSemaphore semaphoreWrite(2,2); //璧勬簮鏈澶氳闂嚎紼?涓紝褰撳墠鍙闂嚎紼嬫暟2涓?
          char g_Array[10];

      娣誨姞涓変釜綰跨▼鍑芥暟錛?/p>

      UINT WriteA(LPVOID pParam)
          {
          CEdit *pEdit=(CEdit*)pParam;
          pEdit->SetWindowText("");
          WaitForSingleObject(semaphoreWrite.m_hObject,INFINITE);
          CString str;
          for(int i=0;i<10;i++)
          {
          pEdit->GetWindowText(str);
          g_Array[i]=''A'';
          str=str+g_Array[i];
          pEdit->SetWindowText(str);
          Sleep(1000);
          }
          ReleaseSemaphore(semaphoreWrite.m_hObject,1,NULL);
          return 0;
          }
          UINT WriteB(LPVOID pParam)
          {
          CEdit *pEdit=(CEdit*)pParam;
          pEdit->SetWindowText("");
          WaitForSingleObject(semaphoreWrite.m_hObject,INFINITE);
          CString str;
          for(int i=0;i<10;i++)
          {
          pEdit->GetWindowText(str);
          g_Array[i]=''B'';
          str=str+g_Array[i];
          pEdit->SetWindowText(str);
          Sleep(1000);
          }
          ReleaseSemaphore(semaphoreWrite.m_hObject,1,NULL);
          return 0;
          }
          UINT WriteC(LPVOID pParam)
          {
          CEdit *pEdit=(CEdit*)pParam;
          pEdit->SetWindowText("");
          WaitForSingleObject(semaphoreWrite.m_hObject,INFINITE);
          for(int i=0;i<10;i++)
          {
          g_Array[i]=''C'';
          pEdit->SetWindowText(g_Array);
          Sleep(1000);
          }
          ReleaseSemaphore(semaphoreWrite.m_hObject,1,NULL);
          return 0;
          }
      榪欎笁涓嚎紼嬪嚱鏁頒笉鍐嶅璇淬傚湪淇″彿閲忓璞℃湁淇″彿鐨勭姸鎬佷笅錛岀嚎紼嬫墽琛屽埌WaitForSingleObject璇彞澶勭戶緇墽琛岋紝鍚屾椂鍙敤綰跨▼鏁板噺1錛涜嫢綰跨▼鎵ц鍒癢aitForSingleObject璇彞鏃朵俊鍙烽噺瀵硅薄鏃犱俊鍙鳳紝綰跨▼灝卞湪榪欓噷絳夊緟錛岀洿鍒頒俊鍙烽噺瀵硅薄鏈変俊鍙風(fēng)嚎紼嬫墠寰涓嬫墽琛屻?
    5. 鍙屽嚮鎸夐挳IDC_START錛屾坊鍔犲叾鍝嶅簲鍑芥暟錛?
      void CMultiThread10Dlg::OnStart()
          {
          CWinThread *pWriteA=AfxBeginThread(WriteA,
          &m_ctrlA,
          THREAD_PRIORITY_NORMAL,
          0,
          CREATE_SUSPENDED);
          pWriteA->ResumeThread();
          CWinThread *pWriteB=AfxBeginThread(WriteB,
          &m_ctrlB,
          THREAD_PRIORITY_NORMAL,
          0,
          CREATE_SUSPENDED);
          pWriteB->ResumeThread();
          CWinThread *pWriteC=AfxBeginThread(WriteC,
          &m_ctrlC,
          THREAD_PRIORITY_NORMAL,
          0,
          CREATE_SUSPENDED);
          pWriteC->ResumeThread();
          }


  • Bluesea 2009-07-18 19:37 鍙戣〃璇勮
    ]]>
    C++鐨勯噸瑕佹ц川http://m.shnenglu.com/finehai/archive/2009/07/18/90446.htmlBlueseaBlueseaSat, 18 Jul 2009 11:25:00 GMThttp://m.shnenglu.com/finehai/archive/2009/07/18/90446.htmlhttp://m.shnenglu.com/finehai/comments/90446.htmlhttp://m.shnenglu.com/finehai/archive/2009/07/18/90446.html#Feedback0http://m.shnenglu.com/finehai/comments/commentRss/90446.htmlhttp://m.shnenglu.com/finehai/services/trackbacks/90446.htmlc錛嬶紜鐨勯噸瑕佹ц川:

    OOP object oriented programming
    property         method
    member variable,member function

    encapsulation
    enheritance
    polymorphism
    overloading

    ellipse circle triangle rectangle square

    virtual浣滅敤錛?br>濡傛灉娌℃湁virtual錛岄偅涔堝氨緇ф壙浜嗗熀綾繪寚閽堢殑鎬ц川錛屽鏋滄湁virtual錛岄偅涔堝氨鎸囧悜瀵?/p>

    璞$殑綾誨瀷銆傝櫄鍑芥暟姝e紡涓轟簡瀵?#8220;濡傛灉浠ヤ竴涓熀綾葷殑鎸囬拡鎸囧悜涓涓淳鐢熺被鐨勫璞★紝閭d箞

    閫氳繃璇ユ寚閽堝彧鑳藉璋冪敤鍩虹被鎵瀹氫箟鐨勬垚鍛樺嚱鏁?#8221;榪欐潯瑙勫垯鍙嶅叾閬撹岃鐨勮璁°?/p>

    綰櫄鍑芥暟浣滅敤錛?br>灝辨槸鍦ㄥ熀綾諱腑騫朵笉瀹炵幇錛屼絾鏄負(fù)浜嗗湪媧劇敓綾諱腑浣跨敤錛屽氨闇瑕佸垎閰嶄竴涓茍涓嶆墽琛岋紝浣?/p>

    鏄繕闇瑕佺戶鎵跨殑鍑芥暟銆傚氨鏄函铏氬嚱鏁?virtual function錛堬級錛?錛涚函铏氬嚱鏁頒笉闇瑕?/p>

    瀹氫箟錛屽湪媧劇敓綾諱腑琚噸鏂板畾涔夈?/p>

    浠涔堟槸鎶借薄綾伙紵
    鎷ユ湁铏氬嚱鏁扮殑綾匯傛娊璞$被涓嶈兘浜х敓鍑哄璞″疄浣擄紝浣嗘槸鍙互鎷ユ湁鎸囧悜鎶借薄綾葷殑鎸囬拡錛?/p>

    渚夸簬鎿嶄綔鎶借薄綾葷殑鍚勪釜媧劇敓綾匯?br>铏氬嚱鏁版淳鐢熶笅鍘諱粛鏄櫄鍑芥暟錛岃屼笖鍙互鐪佺暐virtual銆?/p>

    铏氬嚱鏁板埌搴曟湁浠涔堜綔鐢紵
    1濡傛灉浣犱及璁℃淳鐢熺被浼?xì)閲嶆柊瀹氫箟涓涓垚鍛樺嚱鏁幫紝閭d箞浣犲氨鎶婂熀綾諱腑鐨勮繖涓嚱鏁板啓鎴?/p>

    virtual
    2閫氳繃鍗曚竴鎸囦護(hù)璋冪敤涓嶅悓鍑芥暟錛屽氨鏄鎬丳olymorphism,"ability to asume many

    forms"
    3铏氬嚱鏁版槸c錛嬶紜璇█polymorphism鎬ц川浠ュ強(qiáng)鍔ㄦ佽仈緙栫殑鍏抽敭
    4鏃㈢劧鎶借薄綾諱腑鐨勮櫄鍑芥暟涓嶆墦綆楄璋冪敤錛岄偅涔堝氨鎶婂畠璁劇疆鎴愮函铏氬嚱鏁般?br>5鎷ユ湁綰櫄鍑芥暟鑰呬負(fù)鎶借薄綾匯?br>6鎶借薄綾諱笉鑳戒駭鐢熷嚭瀵硅薄瀹炰綋錛屼絾鏄垜浠彲浠ユ嫢鏈夋寚鍚戞娊璞$被鐨勬寚閽堬紝浠ヤ究浜庢搷浣滄娊

    璞$被鐨勫悇涓淳鐢熺被銆?br>7铏氬嚱鏁版淳鐢熶笅鍘諱粛鏄櫄鍑芥暟錛屽彲浠ヤ笉鍐檝irtual銆?/p>

    铏氬嚱鏁版庢牱宸ヤ綔錛?br>鍦ㄥ惈鏈夎櫄鍑芥暟鐨勭被涓紝緙栬瘧鍣ㄤ細(xì)涓哄畠鍋氬嚭涓涓櫄鍑芥暟琛紝琛ㄤ腑鐨勬瘡涓涓厓绱犻兘鎸囧悜

    涓涓櫄鍑芥暟鐨勫湴鍧銆?/p>

    浠涔堟槸upcasting錛?br>瀹冩槸鍚戜笂寮哄埗鎬х被鍨嬭漿鎹€?br>class CMyDoc:public CDocument;
    CMyDoc mydoc;

    (CDocument)mydodc.func();(upcasting)
    娉ㄦ剰涓鑸笉鐢╱pcasting銆?/p>

    闈欐佸彉閲忓埌搴曟槸浠涔堬紵
    static double m_rate;
    static鎴愬憳鍙橀噺涓嶅睘浜庡璞$殑涓閮ㄥ垎錛岃屾槸綾葷殑涓閮ㄥ垎錛岀▼搴忓彲浠ュ湪娌℃湁璇炵敓浠諱綍

    瀵硅薄鐨勬椂鍊欏氨澶勭悊姝ょ鎴愬憳鍙橀噺錛屼絾棣栫浉浣犲繀欏誨垵濮嬪寲瀹冦?br>static鎴愬憳鍙橀噺鐨勫垵濮嬪寲涓嶈瀹夋帓鍒版瀯閫犲嚱鏁頒腑錛屽洜涓烘瀯閫犲嚱鏁板彲浠ヤ竴鍐嶈璋冪敤錛?/p>

    涔熶笉瑕佹妸鍒濆鍖栧畨鎺掑湪澶?a onclick="javascript:tagshow(event, '%CE%C4%BC%FE');" href="javascript:;" target=_self>鏂囦歡涓紝鍥犱負(fù)鍙兘浼?xì)琚祵鍏ュ埌璁稿鍦版枏V傚簲璇ュ湪綾諱互澶栫殑

    浠諱綍浣嶇疆璁懼畾鍏跺垵鍊箋?br>static鍙橀噺鍙互鎯寵薄鎴愪竴涓叏紼嬪彉閲忋?br>static鎴愬憳鍑芥暟涓嶉渶瑕佸熷姪浠諱綍瀵硅薄錛屽彲浠ヨ璋冪敤鎵ц錛屾墍浠ョ紪璇戝櫒涓嶄細(xì)涓哄畠鏆楀姞

    涓涓猼his鎸囬拡銆傚洜姝tatic鎴愬憳鍑芥暟鏃犳硶澶勭悊綾諱腑鐨刵on錛峴tatic鎴愬憳鍙橀噺銆?br>static鐨勬瀯閫犲緢鏋愬灝辯浉褰撲簬鍏ㄥ眬鍙橀噺錛屽彧鏄畠浼?xì)鍦ㄥ叏灞鍑芥暟涔嬪墠鏋愬銆傛瀯閫犲嚱鏁?/p>

    鍜屾瀽澶熷嚱鏁伴兘鏄互鍑芥暟涓烘爣蹇楃殑銆?/p>

    error LINK2001錛歶nresolved external symbol""();涓鑸槸鍥犱負(fù)娌℃湁鍒濆鍖杝tatic

    鐨勫箋?/p>


    new鐨勫ソ澶勶紵
    鍒嗛厤瀵硅薄鎵闇鍐呭瓨絀洪棿錛屽茍涓斿紩鍙戞瀯閫犲嚱鏁扮殑鎵ц銆?/p>

    浠涔堟槸RTTI?
    RTTI Runtime Type Information 鍔ㄦ佺被鍨嬭瘑鍒?br>灝辨槸鐭ラ亾紼嬪簭鎵ц榪囩▼涓煇涓璞℃槸灞炰簬閭d釜綾葷殑銆?/p>


    浠涔堟槸鍔ㄦ佺敓鎴愶紙Dynamic Creation錛?

    浠涔堟槸寮傛牱澶勭悊(Exception Handling)?
    浣跨敤涓変釜expection淇濈暀瀛?
    try:鍏跺悗璺熼殢涓孌典互{}鍦堝嚭鐨勭▼搴忎唬鐮侊紝exception灝嗗湪閭i噷琚鐞嗐傦紙灝辨槸灝嗚澶?/p>

    鐞嗙殑浠g爜錛?br>catch錛氬叾鍚巤},閲岃竟鏄鐞嗙▼搴忋傦紙灝辨槸鎬庢牱澶勭悊浜嗭級
    throw錛氱敤鏉ヤ駭鐢熶竴涓猠xception銆?/p>


    浠涔堟槸妯℃澘錛?br>template錛屽氨鏄彲浠ラ噸澶嶅埄鐢ㄧ殑鏋舵瀯銆?br>template <class T>
    T power(T base,int exponent);

    榪欓噷鐨凾灝辨槸鍙互闅忔椂鏀瑰彉鐨勯噺銆傚綋鐒惰繖閲岀殑T鏄被鐨勬剰鎬濓紝鍙互鏄郴緇熷畾涔夌殑綾伙紝

    涔熷彲浠ユ槸鑷繁瀹氫箟鐨勭被銆?br>榪欓噷娉ㄦ剰瀵逛簬錛屾ā鏉匡紝涓や釜瀵硅薄濡傛灉閮戒嬌鐢ㄤ簡鍚屼竴涓ā鏉匡紝鍦ㄧ紪璇戠殑鏃跺欐槸涓嶇煡閬?/p>

    鐨勶紝浣嗘槸閾炬帴鐨勬椂鍊欙紝榪炴帴鍣ㄥ氨浼?xì)灏嗕粬浠噸澶嶇殑閮ㄥ垎鍘绘帀銆傛爣鍑嗙殑璇村氨鏄?閾炬帴鍣ㄤ細(xì)

    鎶婃墍鏈夊啑浣欑殑template鐮佸墧闄ゃ傚湪Borland閾炬帴鍣ㄩ噷澶寸О涓簊mart鎶鏈?/p>

    Bluesea 2009-07-18 19:25 鍙戣〃璇勮
    ]]>
    青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              亚洲欧洲在线看| 欧美aa国产视频| 国产欧美日韩精品专区| 亚洲欧美激情精品一区二区| 久久一本综合频道| 国产午夜精品在线| 欧美高清视频一区| 日韩一区二区精品| 久久久精品性| 一本色道久久精品| 国产一区清纯| 欧美精品网站| 久久久在线视频| 亚洲欧美日韩天堂| 亚洲精品视频在线播放| 美女主播视频一区| 99视频精品全部免费在线| 国产亚洲欧洲一区高清在线观看 | 亚洲欧美一区二区原创| 亚洲欧美成人网| 韩国av一区| 国产农村妇女精品一区二区| 欧美欧美全黄| 免费欧美在线| 久久亚洲综合色一区二区三区| 一本色道久久综合亚洲精品不卡| 国内视频一区| 欧美亚一区二区| 久久尤物视频| 久久九九国产| 欧美国产日本高清在线| 一本色道久久综合| 快射av在线播放一区| 在线视频精品| 制服丝袜激情欧洲亚洲| 亚洲精品久久| 久久九九免费视频| 久久久精品午夜少妇| 亚洲欧美在线x视频| 亚洲欧美在线免费| 亚洲欧美日本视频在线观看| 亚洲综合色丁香婷婷六月图片| 中文日韩在线视频| 99精品视频免费观看| 99re这里只有精品6| 日韩亚洲欧美一区| 一区二区av在线| 亚洲已满18点击进入久久 | 亚洲激情午夜| 精品1区2区| 国内成+人亚洲+欧美+综合在线| 国产精品一页| 黄色在线成人| 亚洲人成在线观看一区二区| 亚洲欧洲精品一区二区精品久久久| 欧美日韩国产影院| 欧美日韩在线播放三区| 亚洲人成在线观看| 99国产精品久久| 国产欧美91| 久久久xxx| 久久青草久久| 99国产精品一区| 午夜日韩在线观看| 中文网丁香综合网| 久久全国免费视频| 午夜激情综合网| 亚洲激情一区二区| 久热re这里精品视频在线6| 国产区精品视频| 久久久久久久久久久久久女国产乱| 一区在线播放视频| 亚洲精品久久在线| 欧美性片在线观看| 99国产精品久久久久老师 | 中文亚洲免费| 麻豆国产精品一区二区三区| 日韩视频免费在线观看| 欧美在线一区二区三区| 久久综合伊人77777| 欧美一区二区性| 国产精品激情| 亚洲视频在线二区| 一区二区三区视频在线| 国产欧美在线观看| 欧美一区二区三区在线视频| 欧美一区二区三区四区在线观看| 欧美日韩精选| 久久精品国产精品亚洲精品| 久久女同互慰一区二区三区| 欧美精品性视频| 欧美资源在线| 最新中文字幕亚洲| 一本色道久久88综合亚洲精品ⅰ| 欧美亚洲成人免费| 先锋影音国产精品| 久久这里只有| 99riav国产精品| 亚洲男人av电影| 亚洲欧洲精品一区二区三区不卡 | 亚洲高清网站| 欧美精品二区三区四区免费看视频| 一本色道久久综合亚洲精品高清| 亚洲综合日韩在线| 亚洲人www| 先锋影音网一区二区| 亚洲国产欧美在线| 亚洲一级一区| 一区二区三区久久久| 国产一区二区三区精品欧美日韩一区二区三区| 国产欧美日韩亚洲| 国产亚洲激情在线| 亚洲国产精品第一区二区三区| 国产精品观看| 欧美国产三区| 国产日韩免费| 亚洲清纯自拍| 国产欧美一区二区视频| 欧美电影免费观看高清完整版| 欧美日韩视频在线一区二区| 久久精品首页| 国产精品久久久久久久久搜平片 | 亚洲主播在线观看| 亚洲激情第一区| 亚洲欧美一区二区原创| 亚洲一区二区三区精品在线 | 免费观看日韩av| 欧美一区二区三区视频在线观看 | 亚洲高清视频在线| 国产一区二区精品丝袜| 在线亚洲欧美专区二区| 亚洲美女网站| 鲁鲁狠狠狠7777一区二区| 亚洲一区二区三区高清| 欧美日韩精品伦理作品在线免费观看| 亚洲自拍另类| 久久人人97超碰国产公开结果| 永久555www成人免费| 午夜精品一区二区三区在线播放| 日韩亚洲欧美精品| 久久久久久久综合色一本| 久久国产色av| 国产欧美精品在线| 影音先锋日韩精品| 亚洲精品久久久久久一区二区 | 亚洲精品一区二区三区四区高清| 久久成人一区| 欧美一区二区三区免费观看| 亚洲免费精彩视频| 亚洲视频999| 亚洲最新中文字幕| 欧美怡红院视频| 久久久久久久欧美精品| 亚洲视频一区二区免费在线观看| 亚洲欧美伊人| 欧美性猛片xxxx免费看久爱| 在线看无码的免费网站| 羞羞答答国产精品www一本| 亚洲影院免费观看| 国产精自产拍久久久久久| 一区二区三区视频在线看| 亚洲欧美日韩精品| 国产精品一区视频网站| 欧美一区二区三区视频在线观看| 欧美日韩另类在线| 这里只有精品电影| 欧美在线91| 黄色成人在线免费| 美日韩精品免费| 夜夜嗨一区二区| 久久精品官网| **性色生活片久久毛片| 欧美国产精品一区| 一级成人国产| 久久婷婷影院| 亚洲第一久久影院| 欧美色区777第一页| 性做久久久久久久久| 欧美电影免费观看高清完整版| 一区二区三区高清在线观看| 国产目拍亚洲精品99久久精品| 久久国产精品久久久| 91久久精品一区二区三区| 一本色道久久综合亚洲二区三区| 国产精品视频男人的天堂| 久久综合国产精品| 亚洲一区二区三区777| 欧美第一黄色网| 性欧美激情精品| 亚洲精品一区二区三区蜜桃久| 国产精品入口麻豆原神| 欧美91大片| 性一交一乱一区二区洋洋av| 亚洲精品日韩在线| 久久精品国产亚洲一区二区三区| 9色国产精品| 亚洲国产激情| 国产一区二区三区四区五区美女 | 一道本一区二区| 六月婷婷久久|