锘??xml version="1.0" encoding="utf-8" standalone="yes"?>韩国av一区二区三区,国模一区二区三区,在线日韩电影http://m.shnenglu.com/HUUYUU/zh-cnSun, 16 Nov 2025 09:49:57 GMTSun, 16 Nov 2025 09:49:57 GMT60Freetype瀛︿範絎旇http://m.shnenglu.com/HUUYUU/archive/2008/07/10/55839.htmlHUYUHUYUThu, 10 Jul 2008 14:22:00 GMThttp://m.shnenglu.com/HUUYUU/archive/2008/07/10/55839.htmlhttp://m.shnenglu.com/HUUYUU/comments/55839.htmlhttp://m.shnenglu.com/HUUYUU/archive/2008/07/10/55839.html#Feedback1http://m.shnenglu.com/HUUYUU/comments/commentRss/55839.htmlhttp://m.shnenglu.com/HUUYUU/services/trackbacks/55839.html闃呰鍏ㄦ枃

HUYU 2008-07-10 22:22 鍙戣〃璇勮
]]>
鍐檕perator new鍜宱perator delete鏃惰閬靛驚甯歌http://m.shnenglu.com/HUUYUU/archive/2008/01/22/41608.htmlHUYUHUYUTue, 22 Jan 2008 01:42:00 GMThttp://m.shnenglu.com/HUUYUU/archive/2008/01/22/41608.htmlhttp://m.shnenglu.com/HUUYUU/comments/41608.htmlhttp://m.shnenglu.com/HUUYUU/archive/2008/01/22/41608.html#Feedback0http://m.shnenglu.com/HUUYUU/comments/commentRss/41608.htmlhttp://m.shnenglu.com/HUUYUU/services/trackbacks/41608.html鑷繁閲嶅啓operator new鏃訛紝寰堥噸瑕佺殑涓鐐規槸鍑芥暟鎻愪緵鐨勮涓鴻鍜岀郴緇熺己鐪佺殑operator new涓鑷淬傚疄闄呭仛璧鋒潵涔熷氨鏄細瑕佹湁姝g‘鐨勮繑鍥炲鹼紱鍙敤鍐呭瓨涓嶅鏃惰璋冪敤鍑洪敊澶勭悊鍑芥暟錛涘鐞嗗ソ0瀛楄妭鍐呭瓨璇鋒眰鐨勬儏鍐點傛澶栵紝榪樿閬垮厤涓嶅皬蹇冮殣钘忎簡鏍囧噯褰㈠紡鐨刵ew銆?

闈炵被鎴愬憳褰㈠紡鐨刼perator new鐨勪吉浠g爜錛?

void * operator new(size_t size)        // operator new榪樺彲鑳芥湁鍏跺畠鍙傛暟
{                                      

  if (size == 0)                      // 澶勭悊0瀛楄妭璇鋒眰鏃訛紝
  {

        size = 1;                            // 鎶婂畠褰撲綔1涓瓧鑺傝姹傛潵澶勭悊

  }                                    
  while (1)

{
    鍒嗛厤size瀛楄妭鍐呭瓨;

      if (鍒嗛厤鎴愬姛)
           return (鎸囧悜鍐呭瓨鐨勬寚閽?;

    // 鍒嗛厤涓嶆垚鍔燂紝鎵懼嚭褰撳墠鍑洪敊澶勭悊鍑芥暟
      new_handler globalhandler = set_new_handler(0);
     set_new_handler(globalhandler);

      if (globalhandler) (*globalhandler)();
      else throw std::bad_alloc();
  }
}

 

涓虹壒瀹氱被鍐欑殑new寰寰娌℃湁鑰冭檻璇ョ被琚戶鎵跨殑鎯呭喌錛屼嬌鐢╯izeof(鐖剁被)鑾峰緱澶у皬錛屼絾鏄鏋滃彂鐢熷瓙綾昏皟鐢ㄧ埗綾葷殑new鏃訛紝寰寰

浼氬嚭閿欙紝瀛愮被鐨剆ize寰寰澶т簬鐖剁被鐨剆ize銆傛渶濂界埗綾葷殑new搴旇榪欎箞鍐欙細

void * base::operator new(size_t size)
{
  if (size != sizeof(base))                  // 濡傛灉鏁伴噺“閿欒”錛岃鏍囧噯operator new錛岀簿鍗庨儴鍒嗐?/font>
    return ::operator new(size);        // 鍘誨鐞嗚繖涓姹?br>                                                         //

  ...                                                    // 鍚﹀垯澶勭悊榪欎釜璇鋒眰
}

 

瀵逛簬operator delete(浠ュ強瀹冪殑浼欎即operator delete[])錛屾儏鍐墊洿綆鍗曘傛墍瑕佽浣忕殑鍙槸錛宑++淇濊瘉鍒犻櫎絀烘寚閽堟案榪滄槸瀹夊叏鐨勶紝鎵浠ヤ綘瑕佸厖鍒嗗湴搴旂敤榪欎竴淇濊瘉銆?/p>

涓嬮潰鏄潪綾繪垚鍛樺艦寮忕殑operator delete鐨勪吉浠g爜錛?br>void operator delete(void *rawmemory)
{
  if (rawmemory == 0) return;   //濡傛灉鎸囬拡涓虹┖錛岃繑鍥?br>                                 //

  閲婃斁rawmemory鎸囧悜鐨勫唴瀛?

  return;
}

 

榪欎釜鍑芥暟鐨勭被鎴愬憳鐗堟湰涔熺畝鍗曪紝鍙槸榪樺繀欏繪鏌ヨ鍒犻櫎鐨勫璞$殑澶у皬銆傚亣璁劇被鐨刼perator new灝?#8220;閿欒”澶у皬鐨勫垎閰嶈姹傝漿緇?:operator new錛岄偅涔堜篃蹇呴』灝?#8220;閿欒”澶у皬鐨勫垹闄よ姹傝漿緇?:operator delete錛?

void base::operator delete(void *rawmemory, size_t size)
{
  if (rawmemory == 0) return;          // 媯鏌ョ┖鎸囬拡

  if (size != sizeof(base))                 // 濡傛灉size"閿欒"錛?/p>

{    
    ::operator delete(rawmemory);  // 璁╂爣鍑唎perator鏉ュ鐞嗚姹?br>    return;                       
  }

  閲婃斁鎸囧悜rawmemory鐨勫唴瀛?

  return;
}

鏈夊叧operator new鍜宱perator delete(浠ュ強浠栦滑鐨勬暟緇勫艦寮?鐨勮瀹氫笉鏄偅涔堥夯鐑︼紝閲嶈鐨勬槸蹇呴』閬靛畧瀹冦傚彧瑕佸唴瀛樺垎閰嶇▼搴忔敮鎸乶ew-handler鍑芥暟騫舵紜湴澶勭悊浜嗛浂鍐呭瓨璇鋒眰錛屽氨宸笉澶氫簡錛涘鏋滃唴瀛橀噴鏀劇▼搴忓張澶勭悊浜嗙┖鎸囬拡錛岄偅灝辨病鍏朵粬浠涔堣鍋氱殑浜嗐傝嚦浜庡湪綾繪垚鍛樼増鏈殑鍑芥暟閲屽鍔犵戶鎵挎敮鎸侊紝閭e皢寰堝揩灝卞彲浠ュ畬鎴愩?/p>

HUYU 2008-01-22 09:42 鍙戣〃璇勮
]]>
鍫嗗拰鏍堢殑鍖哄埆http://m.shnenglu.com/HUUYUU/archive/2008/01/10/38435.htmlHUYUHUYUThu, 10 Jan 2008 05:22:00 GMThttp://m.shnenglu.com/HUUYUU/archive/2008/01/10/38435.htmlhttp://m.shnenglu.com/HUUYUU/comments/38435.htmlhttp://m.shnenglu.com/HUUYUU/archive/2008/01/10/38435.html#Feedback0http://m.shnenglu.com/HUUYUU/comments/commentRss/38435.htmlhttp://m.shnenglu.com/HUUYUU/services/trackbacks/38435.html涓銆侀澶囩煡璇嗏旂▼搴忕殑鍐呭瓨鍒嗛厤
    涓涓敱c/C++緙栬瘧鐨勭▼搴忓崰鐢ㄧ殑鍐呭瓨鍒嗕負浠ヤ笅鍑犱釜閮ㄥ垎
    1銆佹爤鍖猴紙stack錛夆?鐢辯紪璇戝櫒鑷姩鍒嗛厤閲婃斁 錛屽瓨鏀懼嚱鏁扮殑鍙傛暟鍊鹼紝灞閮ㄥ彉閲忕殑鍊肩瓑銆傚叾鎿嶄綔鏂瑰紡綾諱技浜庢暟鎹粨鏋勪腑鐨勬爤銆?br>    2銆佸爢鍖猴紙heap錛?鈥?涓鑸敱紼嬪簭鍛樺垎閰嶉噴鏀撅紝 鑻ョ▼搴忓憳涓嶉噴鏀撅紝紼嬪簭緇撴潫鏃跺彲鑳界敱OS鍥炴敹 銆傛敞鎰忓畠涓庢暟鎹粨鏋勪腑鐨勫爢鏄袱鍥炰簨錛屽垎閰嶆柟寮忓掓槸綾諱技浜庨摼琛紝鍛靛懙銆?br>    3銆佸叏灞鍖猴紙闈欐佸尯錛夛紙static錛夆旓紝鍏ㄥ眬鍙橀噺鍜岄潤鎬佸彉閲忕殑瀛樺偍鏄斁鍦ㄤ竴鍧楃殑錛屽垵濮嬪寲鐨勫叏灞鍙橀噺鍜岄潤鎬佸彉閲忓湪涓鍧楀尯鍩燂紝 鏈垵濮嬪寲鐨勫叏灞鍙橀噺鍜屾湭鍒濆鍖栫殑闈欐佸彉閲忓湪鐩擱偦鐨勫彟涓鍧楀尯鍩熴?- 紼嬪簭緇撴潫鍚庢湁緋葷粺閲婃斁
    4銆佹枃瀛楀父閲忓尯鈥斿父閲忓瓧絎︿覆灝辨槸鏀懼湪榪欓噷鐨勩?紼嬪簭緇撴潫鍚庣敱緋葷粺閲婃斁
    5銆佺▼搴忎唬鐮佸尯鈥斿瓨鏀懼嚱鏁頒綋鐨勪簩榪涘埗浠g爜銆?/font>


渚嬪瓙紼嬪簭
榪欐槸涓涓墠杈堝啓鐨勶紝闈炲父璇︾粏
//main.cpp
int a = 0; 鍏ㄥ眬鍒濆鍖栧尯
char *p1; 鍏ㄥ眬鏈垵濮嬪寲鍖?br>main()
{
int b; 鏍?br>char s[] = "abc"; 鏍?br>char *p2; 鏍?br>char *p3 = "123456"; 123456\0鍦ㄥ父閲忓尯錛宲3鍦ㄦ爤涓娿?br>static int c =0錛?鍏ㄥ眬錛堥潤鎬侊級鍒濆鍖栧尯
p1 = (char *)malloc(10);
p2 = (char *)malloc(20);
鍒嗛厤寰楁潵寰?0鍜?0瀛楄妭鐨勫尯鍩熷氨鍦ㄥ爢鍖恒?br>strcpy(p1, "123456"); 123456\0鏀懼湪甯擱噺鍖猴紝緙栬瘧鍣ㄥ彲鑳戒細灝嗗畠涓巔3鎵鎸囧悜鐨?123456"浼樺寲鎴愪竴涓湴鏂廣?br>}


浜屻佸爢鍜屾爤鐨勭悊璁虹煡璇?/font>

2.1鐢寵鏂瑰紡
stack:
鐢辯郴緇熻嚜鍔ㄥ垎閰嶃?渚嬪錛屽0鏄庡湪鍑芥暟涓竴涓眬閮ㄥ彉閲?int b; 緋葷粺鑷姩鍦ㄦ爤涓負b寮杈熺┖闂?br>heap:
闇瑕佺▼搴忓憳鑷繁鐢寵錛屽茍鎸囨槑澶у皬錛屽湪c涓璵alloc鍑芥暟
濡俻1 = (char *)malloc(10);
鍦–++涓敤new榪愮畻絎?br>濡俻2 = (char *)malloc(10);
浣嗘槸娉ㄦ剰p1銆乸2鏈韓鏄湪鏍堜腑鐨勩?br>
2.2鐢寵鍚庣郴緇熺殑鍝嶅簲
鏍堬細鍙鏍堢殑鍓╀綑絀洪棿澶т簬鎵鐢寵絀洪棿錛岀郴緇熷皢涓虹▼搴忔彁渚涘唴瀛橈紝鍚﹀垯灝嗘姤寮傚父鎻愮ず鏍堟孩鍑恒?br>鍫嗭細棣栧厛搴旇鐭ラ亾鎿嶄綔緋葷粺鏈変竴涓褰曠┖闂插唴瀛樺湴鍧鐨勯摼琛紝褰撶郴緇熸敹鍒扮▼搴忕殑鐢寵鏃訛紝
浼氶亶鍘嗚閾捐〃錛屽鎵劇涓涓┖闂村ぇ浜庢墍鐢寵絀洪棿鐨勫爢緇撶偣錛岀劧鍚庡皢璇ョ粨鐐逛粠絀洪棽緇撶偣閾捐〃涓垹闄わ紝騫跺皢璇ョ粨鐐圭殑絀洪棿鍒嗛厤緇欑▼搴忥紝鍙﹀錛屽浜庡ぇ澶氭暟緋葷粺錛屼細鍦ㄨ繖鍧楀唴瀛樼┖闂翠腑鐨勯鍦板潃澶勮褰曟湰嬈″垎閰嶇殑澶у皬錛岃繖鏍鳳紝浠g爜涓殑delete璇彞鎵嶈兘姝g‘鐨勯噴鏀炬湰鍐呭瓨絀洪棿銆傚彟澶栵紝鐢變簬鎵懼埌鐨勫爢緇撶偣鐨勫ぇ灝忎笉涓瀹氭濂界瓑浜庣敵璇風殑澶у皬錛岀郴緇熶細鑷姩鐨勫皢澶氫綑鐨勯偅閮ㄥ垎閲嶆柊鏀懼叆絀洪棽閾捐〃涓?br>
2.3鐢寵澶у皬鐨勯檺鍒?/strong>
鏍堬細鍦╓indows涓?鏍堟槸鍚戜綆鍦板潃鎵╁睍鐨勬暟鎹粨鏋勶紝鏄竴鍧楄繛緇殑鍐呭瓨鐨勫尯鍩熴傝繖鍙ヨ瘽鐨勬剰鎬濇槸鏍堥《鐨勫湴鍧鍜屾爤鐨勬渶澶у閲忔槸緋葷粺棰勫厛瑙勫畾濂界殑錛屽湪WINDOWS涓嬶紝鏍堢殑澶у皬鏄?M錛堜篃鏈夌殑璇存槸1M錛屾諱箣鏄竴涓紪璇戞椂灝辯‘瀹氱殑甯告暟錛夛紝濡傛灉鐢寵鐨勭┖闂磋秴榪囨爤鐨勫墿浣欑┖闂存椂錛屽皢鎻愮ずoverflow銆傚洜姝わ紝鑳戒粠鏍堣幏寰楃殑絀洪棿杈冨皬銆?br>鍫嗭細鍫嗘槸鍚戦珮鍦板潃鎵╁睍鐨勬暟鎹粨鏋勶紝鏄笉榪炵畫鐨勫唴瀛樺尯鍩熴傝繖鏄敱浜庣郴緇熸槸鐢ㄩ摼琛ㄦ潵瀛樺偍鐨勭┖闂插唴瀛樺湴鍧鐨勶紝鑷劧鏄笉榪炵畫鐨勶紝鑰岄摼琛ㄧ殑閬嶅巻鏂瑰悜鏄敱浣庡湴鍧鍚戦珮鍦板潃銆傚爢鐨勫ぇ灝忓彈闄愪簬璁$畻鏈虹郴緇熶腑鏈夋晥鐨勮櫄鎷熷唴瀛樸傜敱姝ゅ彲瑙侊紝鍫嗚幏寰楃殑絀洪棿姣旇緝鐏墊椿錛屼篃姣旇緝澶с?br>

2.4鐢寵鏁堢巼鐨勬瘮杈?/strong>
鏍堢敱緋葷粺鑷姩鍒嗛厤錛岄熷害杈冨揩銆備絾紼嬪簭鍛樻槸鏃犳硶鎺у埗鐨勩?br>鍫嗘槸鐢眓ew鍒嗛厤鐨勫唴瀛橈紝涓鑸熷害姣旇緝鎱紝鑰屼笖瀹規槗浜х敓鍐呭瓨紕庣墖,涓嶈繃鐢ㄨ搗鏉ユ渶鏂逛究.
鍙﹀錛屽湪WINDOWS涓嬶紝鏈濂界殑鏂瑰紡鏄敤VirtualAlloc鍒嗛厤鍐呭瓨錛屼粬涓嶆槸鍦ㄥ爢錛屼篃涓嶆槸鍦ㄦ爤鏄洿鎺ュ湪榪涚▼鐨勫湴鍧絀洪棿涓繚鐣欎竴蹇唴瀛橈紝铏界劧鐢ㄨ搗鏉ユ渶涓嶆柟渚褲備絾鏄熷害蹇紝涔熸渶鐏墊椿銆?br>
2.5鍫嗗拰鏍堜腑鐨勫瓨鍌ㄥ唴瀹?/strong>
鏍堬細 鍦ㄥ嚱鏁拌皟鐢ㄦ椂錛岀涓涓繘鏍堢殑鏄富鍑芥暟涓悗鐨勪笅涓鏉℃寚浠わ紙鍑芥暟璋冪敤璇彞鐨勪笅涓鏉″彲鎵ц璇彞錛夌殑鍦板潃錛岀劧鍚庢槸鍑芥暟鐨勫悇涓弬鏁幫紝鍦ㄥぇ澶氭暟鐨凜緙栬瘧鍣ㄤ腑錛屽弬鏁版槸鐢卞彸寰宸﹀叆鏍堢殑錛岀劧鍚庢槸鍑芥暟涓殑灞閮ㄥ彉閲忋傛敞鎰忛潤鎬佸彉閲忔槸涓嶅叆鏍堢殑銆?br>褰撴湰嬈″嚱鏁拌皟鐢ㄧ粨鏉熷悗錛屽眬閮ㄥ彉閲忓厛鍑烘爤錛岀劧鍚庢槸鍙傛暟錛屾渶鍚庢爤欏舵寚閽堟寚鍚戞渶寮濮嬪瓨鐨勫湴鍧錛屼篃灝辨槸涓誨嚱鏁頒腑鐨勪笅涓鏉℃寚浠わ紝紼嬪簭鐢辮鐐圭戶緇繍琛屻?br>鍫嗭細涓鑸槸鍦ㄥ爢鐨勫ご閮ㄧ敤涓涓瓧鑺傚瓨鏀懼爢鐨勫ぇ灝忋傚爢涓殑鍏蜂綋鍐呭鏈夌▼搴忓憳瀹夋帓銆?br>
2.6瀛樺彇鏁堢巼鐨勬瘮杈?/strong>
char s1[] = "aaaaaaaaaaaaaaa";
char *s2 = "bbbbbbbbbbbbbbbbb";
aaaaaaaaaaa鏄湪榪愯鏃跺埢璧嬪肩殑錛?br>鑰宐bbbbbbbbbb鏄湪緙栬瘧鏃跺氨紜畾鐨勶紱
浣嗘槸錛屽湪浠ュ悗鐨勫瓨鍙栦腑錛屽湪鏍堜笂鐨勬暟緇勬瘮鎸囬拡鎵鎸囧悜鐨勫瓧絎︿覆(渚嬪鍫?蹇?br>姣斿錛?br>錛僫 nclude
void main()
{
char a = 1;
char c[] = "1234567890";
char *p ="1234567890";
a = c[1];
a = p[1];
return;
}
瀵瑰簲鐨勬眹緙栦唬鐮?br>10: a = c[1];
00401067 8A 4D F1 mov cl,byte ptr [ebp-0Fh]
0040106A 88 4D FC mov byte ptr [ebp-4],cl
11: a = p[1];
0040106D 8B 55 EC mov edx,dword ptr [ebp-14h]
00401070 8A 42 01 mov al,byte ptr [edx+1]
00401073 88 45 FC mov byte ptr [ebp-4],al
絎竴縐嶅湪璇誨彇鏃剁洿鎺ュ氨鎶婂瓧絎︿覆涓殑鍏冪礌璇誨埌瀵勫瓨鍣╟l涓紝鑰岀浜岀鍒欒鍏堟妸鎸囬拡鍊艱鍒癳dx涓紝鍦ㄦ牴鎹甧dx璇誨彇瀛楃錛屾樉鐒舵參浜嗐?br>
2.7灝忕粨
鍫嗗拰鏍堢殑鍖哄埆鍙互鐢ㄥ涓嬬殑姣斿柣鏉ョ湅鍑猴細
浣跨敤鏍堝氨璞℃垜浠幓楗閲屽悆楗紝鍙鐐硅彍錛堝彂鍑虹敵璇鳳級銆佷粯閽便佸拰鍚冿紙浣跨敤錛夛紝鍚冮ケ浜嗗氨璧幫紝涓嶅繀鐞嗕細鍒囪彍銆佹礂鑿滅瓑鍑嗗宸ヤ綔鍜屾礂紕椼佸埛閿呯瓑鎵熬宸ヤ綔錛屼粬鐨勫ソ澶勬槸蹇嵎錛屼絾鏄嚜鐢卞害灝忋?br>浣跨敤鍫嗗氨璞℃槸鑷繁鍔ㄦ墜鍋氬枩嬈㈠悆鐨勮彍鑲達紝姣旇緝楹葷儲錛屼絾鏄瘮杈冪鍚堣嚜宸辯殑鍙e懗錛岃屼笖鑷敱搴﹀ぇ銆?br>


windows榪涚▼涓殑鍐呭瓨緇撴瀯


鍦ㄩ槄璇繪湰鏂囦箣鍓嶏紝濡傛灉浣犺繛
鍫嗘爤鏄粈涔堝涓嶇煡閬撶殑璇濓紝璇峰厛闃呰鏂囩珷鍚庨潰鐨?/font>鍩虹鐭ヨ瘑銆?br>
鎺ヨЕ榪?/font>緙栫▼鐨勪漢閮界煡閬擄紝楂樼駭璇█閮借兘閫氳繃鍙橀噺鍚嶆潵璁塊棶鍐呭瓨涓殑鏁版嵁銆傞偅涔堣繖浜涘彉閲忓湪鍐呭瓨涓槸濡備綍瀛樻斁鐨勫憿錛熺▼搴忓張鏄浣曚嬌鐢ㄨ繖浜涘彉閲忕殑鍛紵涓嬮潰灝變細瀵規榪涜娣卞叆鐨勮璁恒備笅鏂囦腑鐨凜璇█浠g爜濡傛病鏈夌壒鍒0鏄庯紝榛樿閮戒嬌鐢╒C緙栬瘧鐨剅elease鐗堛?br>
棣栧厛錛屾潵浜嗚В涓涓?C 璇█鐨勫彉閲忔槸濡備綍鍦ㄥ唴瀛樺垎閮ㄧ殑銆侰 璇█鏈夊叏灞鍙橀噺(Global)銆佹湰鍦板彉閲?Local)錛岄潤鎬佸彉閲?Static)銆佸瘎瀛樺櫒鍙橀噺(Regeister)銆傛瘡縐嶅彉閲忛兘鏈変笉鍚岀殑鍒嗛厤鏂瑰紡銆傚厛鏉ョ湅涓嬮潰榪欐浠g爜錛?br>
錛僫 nclude <stdio.h>

int g1=0, g2=0, g3=0;

int main()
{
static int s1=0, s2=0, s3=0;
int v1=0, v2=0, v3=0;

//鎵撳嵃鍑哄悇涓彉閲忕殑鍐呭瓨鍦板潃

printf("0x%08x\n",&v1); //鎵撳嵃鍚勬湰鍦板彉閲忕殑鍐呭瓨鍦板潃
printf("0x%08x\n",&v2);
printf("0x%08x\n\n",&v3);
printf("0x%08x\n",&g1); //鎵撳嵃鍚勫叏灞鍙橀噺鐨勫唴瀛樺湴鍧
printf("0x%08x\n",&g2);
printf("0x%08x\n\n",&g3);
printf("0x%08x\n",&s1); //鎵撳嵃鍚勯潤鎬佸彉閲忕殑鍐呭瓨鍦板潃
printf("0x%08x\n",&s2);
printf("0x%08x\n\n",&s3);
return 0;
}

緙栬瘧鍚庣殑鎵ц緇撴灉鏄細

0x0012ff78
0x0012ff7c
0x0012ff80

0x004068d0
0x004068d4
0x004068d8

0x004068dc
0x004068e0
0x004068e4

杈撳嚭鐨勭粨鏋滃氨鏄彉閲忕殑鍐呭瓨鍦板潃銆傚叾涓璿1,v2,v3鏄湰鍦板彉閲忥紝g1,g2,g3鏄叏灞鍙橀噺錛宻1,s2,s3鏄潤鎬佸彉閲忋備綘鍙互鐪嬪埌榪欎簺鍙橀噺鍦ㄥ唴瀛樻槸榪炵畫鍒嗗竷鐨勶紝浣嗘槸鏈湴鍙橀噺鍜屽叏灞鍙橀噺鍒嗛厤鐨勫唴瀛樺湴鍧宸簡鍗佷竾鍏崈閲岋紝鑰屽叏灞鍙橀噺鍜岄潤鎬佸彉閲忓垎閰嶇殑鍐呭瓨鏄繛緇殑銆傝繖鏄洜涓烘湰鍦板彉閲忓拰鍏ㄥ眬/闈欐佸彉閲忔槸鍒嗛厤鍦ㄤ笉鍚岀被鍨嬬殑鍐呭瓨鍖哄煙涓殑緇撴灉銆傚浜庝竴涓繘紼嬬殑鍐呭瓨絀洪棿鑰岃█錛屽彲浠ュ湪閫昏緫涓婂垎鎴?涓儴浠斤細浠g爜鍖猴紝闈欐佹暟鎹尯鍜屽姩鎬佹暟鎹尯銆傚姩鎬佹暟鎹尯涓鑸氨鏄?#8220;鍫嗘爤”銆?#8220;鏍?stack)”鍜?#8220;鍫?heap)”鏄袱縐嶄笉鍚岀殑鍔ㄦ佹暟鎹尯錛屾爤鏄竴縐嶇嚎鎬х粨鏋勶紝鍫嗘槸涓縐嶉摼寮忕粨鏋勩傝繘紼嬬殑姣忎釜綰跨▼閮芥湁縐佹湁鐨?#8220;鏍?#8221;錛屾墍浠ユ瘡涓嚎紼嬭櫧鐒朵唬鐮佷竴鏍鳳紝浣嗘湰鍦板彉閲忕殑鏁版嵁閮芥槸浜掍笉騫叉壈銆備竴涓爢鏍堝彲浠ラ氳繃“鍩哄湴鍧”鍜?#8220;鏍堥《”鍦板潃鏉ユ弿榪般傚叏灞鍙橀噺鍜岄潤鎬佸彉閲忓垎閰嶅湪闈欐佹暟鎹尯錛屾湰鍦板彉閲忓垎閰嶅湪鍔ㄦ佹暟鎹尯錛屽嵆鍫嗘爤涓傜▼搴忛氳繃鍫嗘爤鐨勫熀鍦板潃鍜屽亸縐婚噺鏉ヨ闂湰鍦板彉閲忋?br>

鈹溾斺斺斺斺斺斺斺敜浣庣鍐呭瓨鍖哄煙
鈹?…… 鈹?br>鈹溾斺斺斺斺斺斺斺敜
鈹?鍔ㄦ佹暟鎹尯 鈹?br>鈹溾斺斺斺斺斺斺斺敜
鈹?…… 鈹?br>鈹溾斺斺斺斺斺斺斺敜
鈹?浠g爜鍖?鈹?br>鈹溾斺斺斺斺斺斺斺敜
鈹?闈欐佹暟鎹尯 鈹?br>鈹溾斺斺斺斺斺斺斺敜
鈹?…… 鈹?br>鈹溾斺斺斺斺斺斺斺敜楂樼鍐呭瓨鍖哄煙


鍫嗘爤鏄竴涓厛榪涘悗鍑虹殑鏁版嵁緇撴瀯錛屾爤欏跺湴鍧鎬繪槸灝忎簬絳変簬鏍堢殑鍩哄湴鍧銆傛垜浠彲浠ュ厛浜嗚В涓涓嬪嚱鏁拌皟鐢ㄧ殑榪囩▼錛屼互渚垮鍫嗘爤鍦ㄧ▼搴忎腑鐨勪綔鐢ㄦ湁鏇存繁鍏ョ殑浜嗚В銆備笉鍚岀殑璇█鏈変笉鍚岀殑鍑芥暟璋冪敤瑙勫畾錛岃繖浜涘洜绱犳湁鍙傛暟鐨勫帇鍏ヨ鍒欏拰鍫嗘爤鐨勫鉤琛°倃indows API鐨勮皟鐢ㄨ鍒欏拰ANSI C鐨勫嚱鏁拌皟鐢ㄨ鍒欐槸涓嶄竴鏍風殑錛屽墠鑰呯敱琚皟鍑芥暟璋冩暣鍫嗘爤錛屽悗鑰呯敱璋冪敤鑰呰皟鏁村爢鏍堛備袱鑰呴氳繃“__stdcall”鍜?#8220;__cdecl”鍓嶇紑鍖哄垎銆傚厛鐪嬩笅闈㈣繖孌典唬鐮侊細

錛僫 nclude <stdio.h>

void __stdcall func(int param1,int param2,int param3)
{
int var1=param1;
int var2=param2;
int var3=param3;
printf("0x%08x\n",?m1); //鎵撳嵃鍑哄悇涓彉閲忕殑鍐呭瓨鍦板潃
printf("0x%08x\n",?m2);
printf("0x%08x\n\n",?m3);
printf("0x%08x\n",&var1);
printf("0x%08x\n",&var2);
printf("0x%08x\n\n",&var3);
return;
}

int main()
{
func(1,2,3);
return 0;
}

緙栬瘧鍚庣殑鎵ц緇撴灉鏄細

0x0012ff78
0x0012ff7c
0x0012ff80

0x0012ff68
0x0012ff6c
0x0012ff70


鈹溾斺斺斺斺斺斺斺敜<鈥斿嚱鏁版墽琛屾椂鐨勬爤欏訛紙ESP錛夈佷綆绔唴瀛樺尯鍩?br>鈹?…… 鈹?br>鈹溾斺斺斺斺斺斺斺敜
鈹?var 1 鈹?br>鈹溾斺斺斺斺斺斺斺敜
鈹?var 2 鈹?br>鈹溾斺斺斺斺斺斺斺敜
鈹?var 3 鈹?br>鈹溾斺斺斺斺斺斺斺敜
鈹?RET 鈹?br>鈹溾斺斺斺斺斺斺斺敜<鈥?#8220;__cdecl”鍑芥暟榪斿洖鍚庣殑鏍堥《錛圗SP錛?br>鈹?parameter 1 鈹?br>鈹溾斺斺斺斺斺斺斺敜
鈹?parameter 2 鈹?br>鈹溾斺斺斺斺斺斺斺敜
鈹?parameter 3 鈹?br>鈹溾斺斺斺斺斺斺斺敜<鈥?#8220;__stdcall”鍑芥暟榪斿洖鍚庣殑鏍堥《錛圗SP錛?br>鈹?…… 鈹?br>鈹溾斺斺斺斺斺斺斺敜<鈥旀爤搴曪紙鍩哄湴鍧 EBP錛夈侀珮绔唴瀛樺尯鍩?br>

涓婂浘灝辨槸鍑芥暟璋冪敤榪囩▼涓爢鏍堢殑鏍峰瓙浜嗐傞鍏堬紝涓変釜鍙傛暟浠ヤ粠鍙堝埌宸︾殑嬈″簭鍘嬪叆鍫嗘爤錛屽厛鍘?#8220;param3”錛屽啀鍘?#8220;param2”錛屾渶鍚庡帇鍏?#8220;param1”錛涚劧鍚庡帇鍏ュ嚱鏁扮殑榪斿洖鍦板潃(RET)錛屾帴鐫璺寵漿鍒板嚱鏁板湴鍧鎺ョ潃鎵ц錛堣繖閲岃琛ュ厖涓鐐癸紝浠嬬粛UNIX涓嬬殑緙撳啿婧㈠嚭鍘熺悊鐨勬枃绔犱腑閮芥彁鍒板湪鍘嬪叆RET鍚庯紝緇х畫鍘嬪叆褰撳墠EBP錛岀劧鍚庣敤褰撳墠ESP浠f浛EBP銆傜劧鑰岋紝鏈変竴綃囦粙緇峸indows涓嬪嚱鏁拌皟鐢ㄧ殑鏂囩珷涓錛屽湪windows涓嬬殑鍑芥暟璋冪敤涔熸湁榪欎竴姝ラ錛屼絾鏍規嵁鎴戠殑瀹為檯璋冭瘯錛屽茍鏈彂鐜拌繖涓姝ワ紝榪欒繕鍙互浠巔aram3鍜寁ar1涔嬮棿鍙湁4瀛楄妭鐨勯棿闅欒繖鐐圭湅鍑烘潵錛夛紱絎笁姝ワ紝灝嗘爤欏?ESP)鍑忓幓涓涓暟錛屼負鏈湴鍙橀噺鍒嗛厤鍐呭瓨絀洪棿錛屼笂渚嬩腑鏄噺鍘?2瀛楄妭(ESP=ESP-3*4錛屾瘡涓猧nt鍙橀噺鍗犵敤4涓瓧鑺?錛涙帴鐫灝卞垵濮嬪寲鏈湴鍙橀噺鐨勫唴瀛樼┖闂淬傜敱浜?#8220;__stdcall”璋冪敤鐢辮璋冨嚱鏁拌皟鏁村爢鏍堬紝鎵浠ュ湪鍑芥暟榪斿洖鍓嶈鎭㈠鍫嗘爤錛屽厛鍥炴敹鏈湴鍙橀噺鍗犵敤鐨勫唴瀛?ESP=ESP+3*4)錛岀劧鍚庡彇鍑鴻繑鍥炲湴鍧錛屽~鍏IP瀵勫瓨鍣紝鍥炴敹鍏堝墠鍘嬪叆鍙傛暟鍗犵敤鐨勫唴瀛?ESP=ESP+3*4)錛岀戶緇墽琛岃皟鐢ㄨ呯殑浠g爜銆傚弬瑙佷笅鍒楁眹緙栦唬鐮侊細

;--------------func 鍑芥暟鐨勬眹緙栦唬鐮?------------------

:00401000 83EC0C sub esp, 0000000C //鍒涘緩鏈湴鍙橀噺鐨勫唴瀛樼┖闂?br>:00401003 8B442410 mov eax, dword ptr [esp+10]
:00401007 8B4C2414 mov ecx, dword ptr [esp+14]
:0040100B 8B542418 mov edx, dword ptr [esp+18]
:0040100F 89442400 mov dword ptr [esp], eax
:00401013 8D442410 lea eax, dword ptr [esp+10]
:00401017 894C2404 mov dword ptr [esp+04], ecx

……………………錛堢渷鐣ヨ嫢騫蹭唬鐮侊級

:00401075 83C43C add esp, 0000003C ;鎭㈠鍫嗘爤錛屽洖鏀舵湰鍦板彉閲忕殑鍐呭瓨絀洪棿
:00401078 C3 ret 000C ;鍑芥暟榪斿洖錛屾仮澶嶅弬鏁板崰鐢ㄧ殑鍐呭瓨絀洪棿
;濡傛灉鏄?#8220;__cdecl”鐨勮瘽錛岃繖閲屾槸“ret”錛屽爢鏍堝皢鐢辮皟鐢ㄨ呮仮澶?br>
;-------------------鍑芥暟緇撴潫-------------------------


;--------------涓葷▼搴忚皟鐢╢unc鍑芥暟鐨勪唬鐮?-------------

:00401080 6A03 push 00000003 //鍘嬪叆鍙傛暟param3
:00401082 6A02 push 00000002 //鍘嬪叆鍙傛暟param2
:00401084 6A01 push 00000001 //鍘嬪叆鍙傛暟param1
:00401086 E875FFFFFF call 00401000 //璋冪敤func鍑芥暟
;濡傛灉鏄?#8220;__cdecl”鐨勮瘽錛屽皢鍦ㄨ繖閲屾仮澶嶅爢鏍堬紝“add esp, 0000000C”

鑱槑鐨勮鑰呯湅鍒拌繖閲岋紝宸笉澶氬氨鏄庣櫧緙撳啿婧㈠嚭鐨勫師鐞嗕簡銆傚厛鏉ョ湅涓嬮潰鐨勪唬鐮侊細

錛僫 nclude <stdio.h>
錛僫 nclude <string.h>

void __stdcall func()
{
char lpBuff[8]="\0";
strcat(lpBuff,"AAAAAAAAAAA");
return;
}

int main()
{
func();
return 0;
}

緙栬瘧鍚庢墽琛屼竴涓嬪洖鎬庝箞鏍鳳紵鍝堬紝“"0x00414141"鎸囦護寮曠敤鐨?0x00000000"鍐呭瓨銆傝鍐呭瓨涓嶈兘涓?read"銆?#8221;錛?#8220;闈炴硶鎿嶄綔”鍠斤紒"41"灝辨槸"A"鐨?6榪涘埗鐨凙SCII鐮佷簡錛岄偅鏄庢樉灝辨槸strcat榪欏彞鍑虹殑闂浜嗐?lpBuff"鐨勫ぇ灝忓彧鏈?瀛楄妭錛岀畻榪涚粨灝劇殑\0錛岄偅strcat鏈澶氬彧鑳藉啓鍏?涓?A"錛屼絾紼嬪簭瀹為檯鍐欏叆浜?1涓?A"澶栧姞1涓猏0銆傚啀鏉ョ湅鐪嬩笂闈㈤偅騫呭浘錛屽鍑烘潵鐨?涓瓧鑺傛濂借鐩栦簡RET鐨勬墍鍦ㄧ殑鍐呭瓨絀洪棿錛屽鑷村嚱鏁拌繑鍥炲埌涓涓敊璇殑鍐呭瓨鍦板潃錛屾墽琛屼簡閿欒鐨勬寚浠ゃ傚鏋滆兘綺懼績鏋勯犺繖涓瓧絎︿覆錛屼嬌瀹冨垎鎴愪笁閮ㄥ垎錛屽墠涓閮ㄤ喚浠呬粎鏄~鍏呯殑鏃犳剰涔夋暟鎹互杈懼埌婧㈠嚭鐨勭洰鐨勶紝鎺ョ潃鏄竴涓鐩朢ET鐨勬暟鎹紝绱ф帴鐫鏄竴孌祍hellcode錛岄偅鍙鐫涓猂ET鍦板潃鑳芥寚鍚戣繖孌祍hellcode鐨勭涓涓寚浠わ紝閭e嚱鏁拌繑鍥炴椂灝辮兘鎵цshellcode浜嗐備絾鏄蔣浠剁殑涓嶅悓鐗堟湰鍜屼笉鍚岀殑榪愯鐜閮藉彲鑳藉獎鍝嶈繖孌祍hellcode鍦ㄥ唴瀛樹腑鐨勪綅緗紝閭d箞瑕佹瀯閫犺繖涓猂ET鏄崄鍒嗗洶闅劇殑銆備竴鑸兘鍦≧ET鍜宻hellcode涔嬮棿濉厖澶ч噺鐨凬OP鎸囦護錛屼嬌寰梕xploit鏈夋洿寮虹殑閫氱敤鎬с?br>

鈹溾斺斺斺斺斺斺斺敜<鈥斾綆绔唴瀛樺尯鍩?br>鈹?…… 鈹?br>鈹溾斺斺斺斺斺斺斺敜<鈥旂敱exploit濉叆鏁版嵁鐨勫紑濮?br>鈹?鈹?br>鈹?buffer 鈹?lt;鈥斿~鍏ユ棤鐢ㄧ殑鏁版嵁
鈹?鈹?br>鈹溾斺斺斺斺斺斺斺敜
鈹?RET 鈹?lt;鈥旀寚鍚憇hellcode錛屾垨NOP鎸囦護鐨勮寖鍥?br>鈹溾斺斺斺斺斺斺斺敜
鈹?NOP 鈹?br>鈹?…… 鈹?lt;鈥斿~鍏ョ殑NOP鎸囦護錛屾槸RET鍙寚鍚戠殑鑼冨洿
鈹?NOP 鈹?br>鈹溾斺斺斺斺斺斺斺敜
鈹?鈹?br>鈹?shellcode 鈹?br>鈹?鈹?br>鈹溾斺斺斺斺斺斺斺敜<鈥旂敱exploit濉叆鏁版嵁鐨勭粨鏉?br>鈹?…… 鈹?br>鈹溾斺斺斺斺斺斺斺敜<鈥旈珮绔唴瀛樺尯鍩?br>

windows涓嬬殑鍔ㄦ佹暟鎹櫎浜嗗彲瀛樻斁鍦ㄦ爤涓紝榪樺彲浠ュ瓨鏀懼湪鍫嗕腑銆備簡瑙++鐨勬湅鍙嬮兘鐭ラ亾錛孋++鍙互浣跨敤new鍏抽敭瀛楁潵鍔ㄦ佸垎閰嶅唴瀛樸傛潵鐪嬩笅闈㈢殑C++浠g爜錛?br>
錛僫 nclude <stdio.h>
錛僫 nclude <iostream.h>
錛僫 nclude <windows.h>

void func()
{
char *buffer=new char[128];
char bufflocal[128];
static char buffstatic[128];
printf("0x%08x\n",buffer); //鎵撳嵃鍫嗕腑鍙橀噺鐨勫唴瀛樺湴鍧
printf("0x%08x\n",bufflocal); //鎵撳嵃鏈湴鍙橀噺鐨勫唴瀛樺湴鍧
printf("0x%08x\n",buffstatic); //鎵撳嵃闈欐佸彉閲忕殑鍐呭瓨鍦板潃
}

void main()
{
func();
return;
}

紼嬪簭鎵ц緇撴灉涓猴細

0x004107d0
0x0012ff04
0x004068c0

鍙互鍙戠幇鐢╪ew鍏抽敭瀛楀垎閰嶇殑鍐呭瓨鍗充笉鍦ㄦ爤涓紝涔熶笉鍦ㄩ潤鎬佹暟鎹尯銆俈C緙栬瘧鍣ㄦ槸閫氳繃windows涓嬬殑“鍫?heap)”鏉ュ疄鐜皀ew鍏抽敭瀛楃殑鍐呭瓨鍔ㄦ佸垎閰嶃傚湪璁?#8220;鍫?#8221;涔嬪墠錛屽厛鏉ヤ簡瑙d竴涓嬪拰“鍫?#8221;鏈夊叧鐨勫嚑涓狝PI鍑芥暟錛?br>
HeapAlloc 鍦ㄥ爢涓敵璇峰唴瀛樼┖闂?br>HeapCreate 鍒涘緩涓涓柊鐨勫爢瀵硅薄
HeapDestroy 閿姣佷竴涓爢瀵硅薄
HeapFree 閲婃斁鐢寵鐨勫唴瀛?br>HeapWalk 鏋氫婦鍫嗗璞$殑鎵鏈夊唴瀛樺潡
GetProcessHeap 鍙栧緱榪涚▼鐨勯粯璁ゅ爢瀵硅薄
GetProcessHeaps 鍙栧緱榪涚▼鎵鏈夌殑鍫嗗璞?br>LocalAlloc
GlobalAlloc

褰撹繘紼嬪垵濮嬪寲鏃訛紝緋葷粺浼氳嚜鍔ㄤ負榪涚▼鍒涘緩涓涓粯璁ゅ爢錛岃繖涓爢榛樿鎵鍗犲唴瀛樼殑澶у皬涓?M銆傚爢瀵硅薄鐢辯郴緇熻繘琛岀鐞嗭紝瀹冨湪鍐呭瓨涓互閾懼紡緇撴瀯瀛樺湪銆傞氳繃涓嬮潰鐨勪唬鐮佸彲浠ラ氳繃鍫嗗姩鎬佺敵璇峰唴瀛樼┖闂達細

HANDLE hHeap=GetProcessHeap();
char *buff=HeapAlloc(hHeap,0,8);

鍏朵腑hHeap鏄爢瀵硅薄鐨勫彞鏌勶紝buff鏄寚鍚戠敵璇風殑鍐呭瓨絀洪棿鐨勫湴鍧銆傞偅榪欎釜hHeap絀剁珶鏄粈涔堝憿錛熷畠鐨勫兼湁浠涔堟剰涔夊悧錛熺湅鐪嬩笅闈㈣繖孌典唬鐮佸惂錛?br>
#pragma comment(linker,"/entry:main") //瀹氫箟紼嬪簭鐨勫叆鍙?br>錛僫 nclude <windows.h>

_CRTIMP int (__cdecl *printf)(const char *, ...); //瀹氫箟STL鍑芥暟printf
/*---------------------------------------------------------------------------
鍐欏埌榪欓噷錛屾垜浠『渚挎潵澶嶄範涓涓嬪墠闈㈡墍璁茬殑鐭ヨ瘑錛?br>(*娉?printf鍑芥暟鏄疌璇█鐨勬爣鍑嗗嚱鏁板簱涓嚱鏁幫紝VC鐨勬爣鍑嗗嚱鏁板簱鐢眒svcrt.dll妯″潡瀹炵幇銆?br>鐢卞嚱鏁板畾涔夊彲瑙侊紝printf鐨勫弬鏁頒釜鏁版槸鍙彉鐨勶紝鍑芥暟鍐呴儴鏃犳硶棰勫厛鐭ラ亾璋冪敤鑰呭帇鍏ョ殑鍙傛暟涓暟錛屽嚱鏁板彧鑳介氳繃鍒嗘瀽絎竴涓弬鏁板瓧絎︿覆鐨勬牸寮忔潵鑾峰緱鍘嬪叆鍙傛暟鐨勪俊鎭紝鐢變簬榪欓噷鍙傛暟鐨勪釜鏁版槸鍔ㄦ佺殑錛屾墍浠ュ繀欏葷敱璋冪敤鑰呮潵騫寵 鍫嗘爤錛岃繖閲屼究浣跨敤浜哶_cdecl璋冪敤瑙勫垯銆侭TW錛學indows緋葷粺鐨凙PI鍑芥暟鍩烘湰涓婃槸__stdcall璋冪敤褰㈠紡錛屽彧鏈変竴涓狝PI渚嬪錛岄偅灝辨槸wsprintf錛屽畠浣跨敤__cdecl璋冪敤瑙勫垯錛屽悓printf鍑芥暟涓鏍鳳紝榪欐槸鐢變簬瀹冪殑鍙傛暟涓暟鏄彲鍙樼殑緙樻晠銆?br>---------------------------------------------------------------------------*/
void main()
{
HANDLE hHeap=GetProcessHeap();
char *buff=HeapAlloc(hHeap,0,0x10);
char *buff2=HeapAlloc(hHeap,0,0x10);
HMODULE hMsvcrt=LoadLibrary("msvcrt.dll");
printf=(void *)GetProcAddress(hMsvcrt,"printf");
printf("0x%08x\n",hHeap);
printf("0x%08x\n",buff);
printf("0x%08x\n\n",buff2);
}

鎵ц緇撴灉涓猴細

0x00130000
0x00133100
0x00133118

hHeap鐨勫兼庝箞鍜岄偅涓猙uff鐨勫奸偅涔堟帴榪戝憿錛熷叾瀹瀐Heap榪欎釜鍙ユ焺灝辨槸鎸囧悜HEAP棣栭儴鐨勫湴鍧銆傚湪榪涚▼鐨勭敤鎴峰尯瀛樼潃涓涓彨PEB(榪涚▼鐜鍧?鐨勭粨鏋勶紝榪欎釜緇撴瀯涓瓨鏀劇潃涓浜涙湁鍏寵繘紼嬬殑閲嶈淇℃伅錛屽叾涓湪PEB棣栧湴鍧鍋忕Щ0x18澶勫瓨鏀劇殑ProcessHeap灝辨槸榪涚▼榛樿鍫嗙殑鍦板潃錛岃屽亸縐?x90澶勫瓨鏀句簡鎸囧悜榪涚▼鎵鏈夊爢鐨勫湴鍧鍒楄〃鐨勬寚閽堛倃indows鏈夊緢澶欰PI閮戒嬌鐢ㄨ繘紼嬬殑榛樿鍫嗘潵瀛樻斁鍔ㄦ佹暟鎹紝濡倃indows 2000涓嬬殑鎵鏈堿NSI鐗堟湰鐨勫嚱鏁伴兘鏄湪榛樿鍫嗕腑鐢寵鍐呭瓨鏉ヨ漿鎹NSI瀛楃涓插埌Unicode瀛楃涓茬殑銆傚涓涓爢鐨勮闂槸欏哄簭榪涜鐨勶紝鍚屼竴鏃跺埢鍙兘鏈変竴涓嚎紼嬭闂爢涓殑鏁版嵁錛屽綋澶氫釜綰跨▼鍚屾椂鏈夎闂姹傛椂錛屽彧鑳芥帓闃熺瓑寰咃紝榪欐牱渚塊犳垚紼嬪簭鎵ц鏁堢巼涓嬮檷銆?br>
鏈鍚庢潵璇磋鍐呭瓨涓殑鏁版嵁瀵歸綈銆傛墍浣嶆暟鎹榻愶紝鏄寚鏁版嵁鎵鍦ㄧ殑鍐呭瓨鍦板潃蹇呴』鏄鏁版嵁闀垮害鐨勬暣鏁板嶏紝DWORD鏁版嵁鐨勫唴瀛樿搗濮嬪湴鍧鑳借4闄ゅ敖錛學ORD鏁版嵁鐨勫唴瀛樿搗濮嬪湴鍧鑳借2闄ゅ敖錛寈86 CPU鑳界洿鎺ヨ闂榻愮殑鏁版嵁錛屽綋浠栬瘯鍥捐闂竴涓湭瀵歸綈鐨勬暟鎹椂錛屼細鍦ㄥ唴閮ㄨ繘琛屼竴緋誨垪鐨勮皟鏁達紝榪欎簺璋冩暣瀵逛簬紼嬪簭鏉ヨ鏄忔槑鐨勶紝浣嗘槸浼氶檷浣庤繍琛岄熷害錛屾墍浠ョ紪璇戝櫒鍦ㄧ紪璇戠▼搴忔椂浼氬敖閲忎繚璇佹暟鎹榻愩傚悓鏍蜂竴孌典唬鐮侊紝鎴戜滑鏉ョ湅鐪嬬敤VC銆丏ev-C++鍜宭cc涓変釜涓嶅悓緙栬瘧鍣ㄧ紪璇戝嚭鏉ョ殑紼嬪簭鐨勬墽琛岀粨鏋滐細

錛僫 nclude <stdio.h>

int main()
{
int a;
char b;
int c;
printf("0x%08x\n",&a);
printf("0x%08x\n",&b);
printf("0x%08x\n",&c);
return 0;
}

榪欐槸鐢╒C緙栬瘧鍚庣殑鎵ц緇撴灉錛?br>0x0012ff7c
0x0012ff7b
0x0012ff80
鍙橀噺鍦ㄥ唴瀛樹腑鐨勯『搴忥細b(1瀛楄妭)-a(4瀛楄妭)-c(4瀛楄妭)銆?br>
榪欐槸鐢―ev-C++緙栬瘧鍚庣殑鎵ц緇撴灉錛?br>0x0022ff7c
0x0022ff7b
0x0022ff74
鍙橀噺鍦ㄥ唴瀛樹腑鐨勯『搴忥細c(4瀛楄妭)-涓棿鐩擱殧3瀛楄妭-b(鍗?瀛楄妭)-a(4瀛楄妭)銆?br>
榪欐槸鐢╨cc緙栬瘧鍚庣殑鎵ц緇撴灉錛?br>0x0012ff6c
0x0012ff6b
0x0012ff64
鍙橀噺鍦ㄥ唴瀛樹腑鐨勯『搴忥細鍚屼笂銆?br>
涓変釜緙栬瘧鍣ㄩ兘鍋氬埌浜嗘暟鎹榻愶紝浣嗘槸鍚庝袱涓紪璇戝櫒鏄劇劧娌C“鑱槑”錛岃涓涓猚har鍗犱簡4瀛楄妭錛屾氮璐瑰唴瀛樺摝銆?br>

鍩虹鐭ヨ瘑錛?/font>
鍫嗘爤鏄竴縐嶇畝鍗曠殑鏁版嵁緇撴瀯錛屾槸涓縐嶅彧鍏佽鍦ㄥ叾涓绔繘琛屾彃鍏ユ垨鍒犻櫎鐨勭嚎鎬ц〃銆傚厑璁告彃鍏ユ垨鍒犻櫎鎿嶄綔鐨勪竴绔О涓烘爤欏訛紝鍙︿竴绔О涓烘爤搴曪紝瀵瑰爢鏍堢殑鎻掑叆鍜屽垹闄ゆ搷浣滆縐頒負鍏ユ爤鍜屽嚭鏍堛傛湁涓緇凜PU鎸囦護鍙互瀹炵幇瀵硅繘紼嬬殑鍐呭瓨瀹炵幇鍫嗘爤璁塊棶銆傚叾涓紝POP鎸囦護瀹炵幇鍑烘爤鎿嶄綔錛孭USH鎸囦護瀹炵幇鍏ユ爤鎿嶄綔銆侰PU鐨凟SP瀵勫瓨鍣ㄥ瓨鏀懼綋鍓嶇嚎紼嬬殑鏍堥《鎸囬拡錛孍BP瀵勫瓨鍣ㄤ腑淇濆瓨褰撳墠綰跨▼鐨勬爤搴曟寚閽堛侰PU鐨凟IP瀵勫瓨鍣ㄥ瓨鏀句笅涓涓狢PU鎸囦護瀛樻斁鐨勫唴瀛樺湴鍧錛屽綋CPU鎵ц瀹屽綋鍓嶇殑鎸囦護鍚庯紝浠嶦IP瀵勫瓨鍣ㄤ腑璇誨彇涓嬩竴鏉℃寚浠ょ殑鍐呭瓨鍦板潃錛岀劧鍚庣戶緇墽琛屻?

 <br>

鍫嗭紙Heap錛夋爤錛圫tack錛?

1銆佸唴瀛樺垎閰嶆柟闈細

    鍫嗭細涓鑸敱紼嬪簭鍛?/strong>鍒嗛厤閲婃斁錛?鑻ョ▼搴忓憳涓嶉噴鏀撅紝紼嬪簭緇撴潫鏃跺彲鑳界敱OS鍥炴敹 銆傛敞鎰忓畠涓庢暟鎹粨鏋勪腑鐨勫爢鏄袱鍥炰簨錛屽垎閰嶆柟寮忔槸綾諱技浜庨摼琛ㄣ傚彲鑳界敤鍒扮殑鍏抽敭瀛楀涓嬶細new銆?strong>malloc銆?strong>delete銆?strong>free絳夌瓑銆?

    鏍堬細鐢?strong>緙栬瘧鍣?/strong>(Compiler)鑷姩鍒嗛厤閲婃斁錛屽瓨鏀?strong>鍑芥暟鐨勫弬鏁板?/strong>錛?strong>灞閮ㄥ彉閲?/strong>鐨勫肩瓑銆傚叾鎿嶄綔鏂瑰紡綾諱技浜庢暟鎹粨鏋勪腑鐨勬爤銆?

2銆佺敵璇鋒柟寮忔柟闈細

    鍫嗭細闇瑕佺▼搴忓憳鑷繁鐢寵錛屽茍鎸囨槑澶у皬銆傚湪c涓璵alloc鍑芥暟濡俻1 = (char *)malloc(10)錛涘湪C++涓敤new榪愮畻絎︼紝浣嗘槸娉ㄦ剰p1銆乸2鏈韓鏄湪鏍堜腑鐨勩傚洜涓轟粬浠繕鏄彲浠ヨ涓烘槸灞閮ㄥ彉閲忋?

    鏍堬細鐢辯郴緇熻嚜鍔ㄥ垎閰嶃?渚嬪錛屽0鏄庡湪鍑芥暟涓竴涓眬閮ㄥ彉閲?int b錛涚郴緇熻嚜鍔ㄥ湪鏍堜腑涓篵寮杈熺┖闂淬?

3銆佺郴緇熷搷搴旀柟闈細

    鍫嗭細鎿嶄綔緋葷粺鏈変竴涓褰曠┖闂插唴瀛樺湴鍧鐨勯摼琛紝褰撶郴緇熸敹鍒扮▼搴忕殑鐢寵鏃訛紝浼氶亶鍘嗚閾捐〃錛屽鎵劇涓涓┖闂村ぇ浜庢墍鐢寵絀洪棿鐨勫爢緇撶偣錛岀劧鍚庡皢璇ョ粨鐐逛粠絀洪棽緇撶偣閾捐〃涓垹闄わ紝騫跺皢璇ョ粨鐐圭殑絀洪棿鍒嗛厤緇欑▼搴忥紝鍙﹀錛屽浜庡ぇ澶氭暟緋葷粺錛屼細鍦ㄨ繖鍧楀唴瀛樼┖闂翠腑鐨勯鍦板潃澶勮褰曟湰嬈″垎閰嶇殑澶у皬錛岃繖鏍蜂唬鐮佷腑鐨刣elete璇彞鎵嶈兘姝g‘鐨勯噴鏀炬湰鍐呭瓨絀洪棿銆傚彟澶栫敱浜庢壘鍒扮殑鍫嗙粨鐐圭殑澶у皬涓嶄竴瀹氭濂界瓑浜庣敵璇風殑澶у皬錛岀郴緇熶細鑷姩鐨勫皢澶氫綑鐨勯偅閮ㄥ垎閲嶆柊鏀懼叆絀洪棽閾捐〃涓?

    鏍堬細鍙鏍堢殑鍓╀綑絀洪棿澶т簬鎵鐢寵絀洪棿錛岀郴緇熷皢涓虹▼搴忔彁渚涘唴瀛橈紝鍚﹀垯灝嗘姤寮傚父鎻愮ず鏍堟孩鍑恒?

4銆佸ぇ灝忛檺鍒舵柟闈細

    鍫嗭細鏄?strong>鍚戦珮鍦板潃鎵╁睍鐨勬暟鎹粨鏋勶紝鏄?strong>涓嶈繛緇?/strong>鐨勫唴瀛樺尯鍩熴傝繖鏄敱浜庣郴緇熸槸鐢ㄩ摼琛ㄦ潵瀛樺偍鐨勭┖闂插唴瀛樺湴鍧鐨勶紝鑷劧鏄笉榪炵畫鐨勶紝鑰岄摼琛ㄧ殑閬嶅巻鏂瑰悜鏄敱浣庡湴鍧鍚戦珮鍦板潃銆傚爢鐨勫ぇ灝忓彈闄愪簬璁$畻鏈虹郴緇熶腑鏈夋晥鐨勮櫄鎷熷唴瀛?/strong>銆傜敱姝ゅ彲瑙侊紝鍫嗚幏寰楃殑絀洪棿姣旇緝鐏墊椿錛屼篃姣旇緝澶с?

    鏍堬細鍦╓indows涓? 鏍堟槸鍚戜綆鍦板潃鎵╁睍鐨勬暟鎹粨鏋勶紝鏄竴鍧?strong>榪炵畫鐨勫唴瀛樼殑鍖哄煙銆傝繖鍙ヨ瘽鐨勬剰鎬濇槸鏍堥《鐨勫湴鍧鍜屾爤鐨勬渶澶у閲忔槸緋葷粺棰勫厛瑙勫畾濂?/strong>鐨勶紝鍦╓INDOWS涓嬶紝鏍堢殑澶у皬鏄浐瀹氱殑錛堟槸涓涓紪璇戞椂灝辯‘瀹氱殑甯告暟錛夛紝濡傛灉鐢寵鐨勭┖闂磋秴榪囨爤鐨勫墿浣欑┖闂存椂錛屽皢鎻愮ずoverflow銆傚洜姝わ紝鑳戒粠鏍堣幏寰楃殑絀洪棿杈冨皬銆?

5銆佹晥鐜囨柟闈細

    鍫嗭細鏄敱new鍒嗛厤鐨勫唴瀛橈紝涓鑸熷害姣旇緝鎱紝鑰屼笖瀹規槗浜х敓鍐呭瓨紕庣墖錛屼笉榪囩敤璧鋒潵鏈鏂逛究錛屽彟澶栵紝鍦╓INDOWS涓嬶紝鏈濂界殑鏂瑰紡鏄敤VirtualAlloc鍒嗛厤鍐呭瓨錛屼粬涓嶆槸鍦ㄥ爢錛屼篃涓嶆槸鍦ㄦ爤鏄洿鎺ュ湪榪涚▼鐨勫湴鍧絀洪棿涓繚鐣欎竴蹇唴瀛橈紝铏界劧鐢ㄨ搗鏉ユ渶涓嶆柟渚褲備絾鏄熷害蹇紝涔熸渶鐏墊椿銆?

    鏍堬細鐢辯郴緇熻嚜鍔ㄥ垎閰嶏紝閫熷害杈冨揩銆備絾紼嬪簭鍛樻槸鏃犳硶鎺у埗鐨勩?

6銆佸瓨鏀懼唴瀹規柟闈細

    鍫嗭細涓鑸槸鍦ㄥ爢鐨勫ご閮ㄧ敤涓涓瓧鑺傚瓨鏀懼爢鐨勫ぇ灝忋?strong>鍫嗕腑鐨勫叿浣撳唴瀹規湁紼嬪簭鍛樺畨鎺掋?/strong>

    鏍堬細鍦ㄥ嚱鏁拌皟鐢ㄦ椂絎竴涓繘鏍堢殑鏄富鍑芥暟涓悗鐨勪笅涓鏉℃寚浠わ紙鍑芥暟璋冪敤璇彞鐨勪笅涓鏉″彲鎵ц璇彞錛夌殑鍦板潃鐒跺悗鏄嚱鏁扮殑鍚勪釜鍙傛暟錛屽湪澶у鏁扮殑C緙栬瘧鍣ㄤ腑錛?strong>鍙傛暟鏄敱鍙沖線宸﹀叆鏍?/strong>錛岀劧鍚庢槸鍑芥暟涓殑灞閮ㄥ彉閲忋?娉ㄦ剰: 闈欐佸彉閲忔槸涓嶅叆鏍堢殑銆傚綋鏈鍑芥暟璋冪敤緇撴潫鍚庯紝灞閮ㄥ彉閲忓厛鍑烘爤錛岀劧鍚庢槸鍙傛暟錛屾渶鍚庢爤欏舵寚閽堟寚鍚戞渶寮濮嬪瓨鐨勫湴鍧錛屼篃灝辨槸涓誨嚱鏁頒腑鐨勪笅涓鏉℃寚浠わ紝紼嬪簭鐢辮鐐圭戶緇繍琛?/strong>銆?

7銆佸瓨鍙栨晥鐜囨柟闈細

    鍫嗭細char *s1 = "Hellow Word"錛涙槸鍦?strong>緙栬瘧鏃?/strong>灝辯‘瀹氱殑錛?

    鏍堬細char s1[] = "Hellow Word"錛?鏄湪榪愯鏃?/strong>璧嬪肩殑錛涚敤鏁扮粍姣旂敤鎸囬拡閫熷害瑕佸揩涓浜涳紝鍥犱負鎸囬拡鍦ㄥ簳灞傛眹緙栦腑闇瑕佺敤edx瀵勫瓨鍣ㄤ腑杞竴涓嬶紝鑰屾暟緇勫湪鏍堜笂鐩存帴璇誨彇銆?/p>
 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1925576



HUYU 2008-01-10 13:22 鍙戣〃璇勮
]]>
Variable Parameters Print Examplehttp://m.shnenglu.com/HUUYUU/archive/2007/01/19/17792.htmlHUYUHUYUFri, 19 Jan 2007 09:55:00 GMThttp://m.shnenglu.com/HUUYUU/archive/2007/01/19/17792.htmlhttp://m.shnenglu.com/HUUYUU/comments/17792.htmlhttp://m.shnenglu.com/HUUYUU/archive/2007/01/19/17792.html#Feedback0http://m.shnenglu.com/HUUYUU/comments/commentRss/17792.htmlhttp://m.shnenglu.com/HUUYUU/services/trackbacks/17792.html#include <stdio.h>
#include <string.h>
#include <stdarg.h>

#include "drm_korea_def.h"

#ifdef __KDRM_FSTRACE

#define LOG_BUFFER_SIZE 512
#define LOG_LINE_NUM  16

#ifdef WIN32
#define LOG_FILE     FILE *
#define LOG_OPEN(s, m)   fopen(s, m)
#define LOG_CLOSE(hLog)   fclose(hLog)
#define LOG_READ (hLog, p, x)  fread (p, x, 1, hLog)
#define LOG_WRITE(hLog, p, x) fwrite(p, x, 1, hLog)
#define LOG_PUTC(hLog, c)  fputc(c, hLog)
#define LOG_PUTS(hLog, s)  fputs(s, hLog)
#else
#define LOG_FILE     int32_t
#define LOG_OPEN(s, m)   Fopen((uint8_t *)s, (uint8_t *)m)
#define LOG_CLOSE(hLog)   Fclose(hLog)
#define LOG_READ (hLog, p, x)  Fread (hLog,  p, x)
#define LOG_WRITE(hLog, p, x) Fwrite(hLog, p, x)
#define LOG_PUTC(hLog, c)  Fputc(hLog, c)
#define LOG_PUTS(hLog, s)  Fputs(hLog, (uint8_t *)s)
#endif

static LOG_FILE fpLogfile;
static char logBuffer[LOG_BUFFER_SIZE];

void log_Init(char *logName)
{
 fpLogfile = LOG_OPEN(logName, "w+");

 if(fpLogfile > 0)
 {
  log_Print("\r\n====> Starting ... :%s %s\r\n", __TIME__, __FILE__);
 }
}

void log_Print(char *logFormat, ...)
{
 if(fpLogfile > 0)
 {
  va_list va;
  int len;

  va_start(va, logFormat);
  len = vsprintf(logBuffer, logFormat, va);
  va_end(va);

  logBuffer[len+1] = 0;

  LOG_PUTS(fpLogfile, logBuffer);
 }
}

char Hex2Dec(unsigned char bHex)
{
 bHex &= 0x0F;
 bHex += bHex<10? '0': 'A' - 10;

 return bHex;
}

void log_Dump(const unsigned char  *pCache, int u32Size, bool bBinary)
{
 int i, stride;
 unsigned char *p = (unsigned char  *)pCache;
 char cTmp;

 if(fpLogfile < 0)
  return;

 if(bBinary)
 {
  for(; p<pCache+u32Size; p+=LOG_BUFFER_SIZE)
  {
   stride = (p+LOG_BUFFER_SIZE <= pCache+u32Size)? LOG_BUFFER_SIZE: u32Size%LOG_BUFFER_SIZE;
   LOG_WRITE(fpLogfile, p, stride);
  }
 }
 else
 {
  for(; p<pCache+u32Size; p+=LOG_LINE_NUM)
  {
   stride = (p+LOG_LINE_NUM <= pCache+u32Size)? LOG_LINE_NUM:u32Size%LOG_LINE_NUM;

   for(i=0; i<stride; i++)
   {
    cTmp = Hex2Dec((p[i]&0xF0) >> 4);
    LOG_PUTC(fpLogfile, cTmp);
    cTmp = Hex2Dec(p[i]&0x0F);
    LOG_PUTC(fpLogfile, cTmp);
    LOG_PUTC(fpLogfile, ' ');
    if(i== (LOG_LINE_NUM/2 - 1))
    {
     LOG_PUTC(fpLogfile, '-');
     LOG_PUTC(fpLogfile, ' ');
    }
   }

   LOG_PUTC(fpLogfile, '\n');
  }
 }
}

void log_Terminate(void)
{
 if(fpLogfile > 0)
 {
  log_Print("<==== Stopping ... :%s\r\n", __TIME__);
  LOG_CLOSE(fpLogfile);
 }
}

#endif //__KDRM_FSTRACE



HUYU 2007-01-19 17:55 鍙戣〃璇勮
]]>
FreeType2鐮旂┒ http://m.shnenglu.com/HUUYUU/archive/2006/11/10/14985.htmlHUYUHUYUFri, 10 Nov 2006 15:00:00 GMThttp://m.shnenglu.com/HUUYUU/archive/2006/11/10/14985.htmlhttp://m.shnenglu.com/HUUYUU/comments/14985.htmlhttp://m.shnenglu.com/HUUYUU/archive/2006/11/10/14985.html#Feedback5http://m.shnenglu.com/HUUYUU/comments/commentRss/14985.htmlhttp://m.shnenglu.com/HUUYUU/services/trackbacks/14985.html FreeType2鐮旂┒

鏈榪戝涔犵姸鎬佷笉浣籌紝鎰熻浠涔堥兘鎯沖仛鍗翠粈涔堜篃鍋氫笉涓嬪幓錛屾誕韜佷箣鏋併傚ぇ鐨勫簱涓涓嬪瓙鐮旂┒涓嶄笅鏉ワ紝绱㈡ф壘涓涓嬪皬搴撴潵鐪嬬湅銆?br />娓告垙閲岄潰涓鑸兘娑夊強鍒版枃鏈佸帇緙┿佸浘鍍忋佽剼鏈殑姒傚康錛屼負浜嗗皢鏉ユ湁鏈轟細鐮旂┒娓告垙鎵浠ュ厛涓嬫墜榪欎簺灝忓簱錛屼笉姹傜敋瑙e彧姹傜敤濂姐?br />
鍏堜粠瀛椾綋鐫鎵嬶紝FreeType瀛椾綋浣滀負涓縐嶅瓧浣撴枃浠剁紪紼嬪紑鍙戝寘錛屽箍娉涙槗鐢ㄥ湪娓告垙閲岄潰銆傜綉涓婃眽璇祫鏂欐瘮杈冨皯錛屽彧鑳界湅瀹冪殑faq銆傜炕璇戜簡閮ㄥ垎濡備笅錛?br />

FreeType 2 Library

FAQ

錛堝綋鍓嶄笅杞藉湴鍧錛?/span> http://sourceforge.net/project/showfiles.php?group_id=3157 鐗堟湰 2.2.1 錛?/span>

1銆?span style="FONT: 7pt 'Times New Roman'">聽 FreeType2 鏄粈涔堬紵

瀹冩槸涓涓負鍚勭搴旂敤紼嬪簭鎻愪緵閫氱敤鐨勫瓧浣撴枃浠惰闂殑杞歡鍖呫傚挨鍏跺煎緱娉ㄦ剰鐨勪互涓嬬壒鎬э細

l聽聽聽聽聽聽聽聽 鎻愪緵緇熶竴鐨勫瓧浣撴枃浠惰闂帴鍙c傛敮鎸佷綅鍥懼拰鍚戦噺鏍煎紡錛屽寘鎷?/span> TrueType 銆?/span> OpenType 銆?/span> Typel 銆?/span> CID 銆?/span> CFF 銆?/span> Windows FON/FNT 銆?/span> X11 PCF 銆?/span>

l聽聽聽聽聽聽聽聽 鎻愪緵楂樻晥鍙嶈蛋鏍風殑鍩轟簬 256 鐏板害綰х殑浣嶅浘瀛楀艦鐨勭敓浜с?/span>

l聽聽聽聽聽聽聽聽 妯″潡娓呮櫚錛屾瘡縐嶅瓧浣撴牸寮忓浜庝竴涓ā鍧椼傜被搴撶殑鏋勫緩鍙互鎸夌収浣犻渶瑕佹敮鎸佺殑鏍煎紡榪涜瑁佸噺浠ュ噺灝忎唬鐮佸昂瀵搞傦紙鏈灝忕殑鍙嶈蛋鏍?/span> FreeType 搴?/span> <30Kb 錛?/span>

2銆?span style="FONT: 7pt 'Times New Roman'">聽 FreeType2 鑳藉仛浠涔堬紵

FT2 宸茬粡鏄撶敤浜庤澶氶鍩熴備緥濡傦細

l聽聽聽聽聽聽聽聽 鍥懼艦瀛愮郴緇熷拰鏂囨湰鏄劇ず搴?/span>

l聽聽聽聽聽聽聽聽 鏂囨湰鎺掔増錛堝竷灞銆佸垎欏點佹覆鏌擄級

l聽聽聽聽聽聽聽聽 瀛椾綋璇嗗埆鍜岃漿鎹㈠伐鍏?/span>

涓鑸潵璇達紝璇ュ簱浣垮緱浣犺兘杞繪澗鐨勬搷綰靛瓧浣撴枃浠躲?/span>

3銆?span style="FONT: 7pt 'Times New Roman'">聽 FreeType2 涓嶈兘鍋氫粈涔堬紵

FT2 騫朵笉鍖呭惈澶ч噺涓板瘜鐨勯珮綰х壒鎬э紝瀹冨彧瀹氫綅浜庡嚭鑹茬殑瀛椾綋鏈嶅姟銆備篃灝辨槸璇翠笅闈㈢殑涓浜涚壒鎬?/span> FT2 綾誨簱騫朵笉鐩存帴鎻愪緵鏀寔錛岀劧鑰屼綘鍙互浠ュ畠涓哄熀紜鍦ㄤ笂灞傝繘琛屽疄鐜幫細

l聽聽聽聽聽聽聽聽 浠繪剰琛ㄩ潰鐨勬枃瀛楁覆鏌?/span>

FT2 涓嶆槸鍥懼艦搴撴墍浠ュ畠浠呮敮鎸佷袱縐嶈薄绱犳牸寮忕殑鏂囨湰娓叉煋錛?/span> 1-bit 鐨勫崟鑹蹭綅鍥懼拰 8-bit 鐨勭伆搴﹁薄绱犮?/span>

濡傛灉浣犻渶瑕佺粯鍒跺叾瀹冩牸寮忕殑琛ㄩ潰錛堜緥濡?/span> 24-bit RGB 璞$礌錛夛紝浣犲氨寰楅夋嫨鍏跺畠浣犲枩鐖辯殑鍥懼艦搴撴潵鍋氥?/span>

娉ㄦ剰錛氫負浜嗘覆鏌撳悜閲忚疆寤撴枃鏈屼笉鏄斁璧版牱鐨勮薄绱狅紝搴旂敤紼嬪簭鍙互鎻愪緵鑷繁鐨勬覆鏌撳洖璋冧互緇樺埗鎴栬呯洿鎺ョ粍鍚堝弽璧版牱鏂囨湰鍒頒換鎰忕洰鏍囪〃闈€?/span>

l聽聽聽聽聽聽聽聽 鏂囨湰緙撳瓨

姣忔浠庡瓧浣撲腑璇鋒眰鏂囨湰鍥捐薄錛?/span> FT2 閮借瑙f瀽瀛椾綋鏂囦歡 / 嫻佺浉鍏抽儴鍒嗭紝閫氳繃瀹冪殑瀛椾綋鏍煎紡榪涜瑙i噴銆傚浜庢煇浜涚壒孌婃牸寮忓彲鑳戒細寰堟參鍖呮嫭鍍?/span> TrueType 錛堟垨鑰?/span> Type1 錛夎繖鏍風殑鍚戦噺瀛椾綋銆?/span>

娉ㄦ剰錛氳嚜浠?/span> 2.0.1 鐗堟湰寮濮?/span> FT2 鎻愪緵浜嗕竴涓?/span> beta 鐗堟湰鐨勭紦瀛樺瓙緋葷粺銆傚綋鐒朵綘榪樻槸鍙互鍐欒嚜宸辯殑緙撳瓨鏉ユ弧瓚蟲煇縐嶇壒孌婇渶姹傘?/span>

l聽聽聽聽聽聽聽聽 鏂囨湰甯冨眬

涓嶆敮鎸佹枃鏈竷灞鎿嶄綔銆傞珮綰ф搷浣滀緥濡傛枃鏈浛鎹€佸瓧璺濊皟鏁淬佷袱绔皟鏁寸瓑閮戒笉灞炰簬瀛椾綋鏈嶅姟鏈韓鑱岃矗銆?/span>

4銆?span style="FONT: 7pt 'Times New Roman'">聽 FreeType2 鍙Щ妞嶆э紵

FT2 婧愮爜鍙Щ妞嶆у緢濂界敱浜庝互涓嬪師鍥狅細

l聽聽聽聽聽聽聽聽 浠g爜涔﹀啓閬靛驚 ANSI C 鏍囧噯

l聽聽聽聽聽聽聽聽 瀵逛簬鍚勭緙栬瘧璀﹀憡鎴戜滑閮借皚鎱庣殑閬垮厤銆傚綋鍓嶄唬鐮佸湪寰堝緙栬瘧鍣ㄤ笂緙栬瘧閫氳繃涓旀病鏈変駭鐢熶竴鏉¤鍛娿?/span>

l聽聽聽聽聽聽聽聽 搴撴病鏈変嬌鐢ㄤ換浣曠‖緙栫爜錛屾槸宓屽叆寮忕郴緇熷紑鍙戠殑涓涓ソ鐨勯夋嫨銆傦紙渚嬪瀹冭兘澶熺洿鎺ュ湪 ROM 涓繍琛岋級

鍚屾椂錛屾垜浠敖鏈澶у姫鍔涚‘淇濆簱鐨勯珮鏁堛佺揣鍑戝拰鍙嬪ソ鎬с?/span>

5銆?span style="FONT: 7pt 'Times New Roman'">聽 FreeType2 涓?/span> FreeType1.x 鐨勫尯鍒紵

鏈澶х殑鍖哄埆灝辨槸錛?/span>

l聽聽聽聽聽聽聽聽 FT1 浠呮敮鎸?/span> TrueType 鏍煎紡錛岃?/span> FT2 鏀寔寰堝鏍煎紡銆?/span>

l聽聽聽聽聽聽聽聽 FT2 APIs 姣?/span> FT1 APIs 綆鍗曚笖寮哄ぇ銆?/span>

l聽聽聽聽聽聽聽聽 FT1 鍖呮嫭 OpenType 鏂囨湰甯冨眬澶勭悊鎵╁睍錛岃?/span> FT2 涓垯涓嶅寘鎷屾槸縐誨埌鐙珛鐨勫伐紼嬮噷闈⑩曗?/span> FreeType Layout 銆傦紙 FT 甯冨眬鐩墠鏃犳硶鑾峰彇錛?/span>

6銆?span style="FONT: 7pt 'Times New Roman'">聽 FreeType2 鏄惁鍏煎 FreeType 1.x 錛?/span>

FreeType2 涓嶇洿鎺ュ吋瀹?/span> FreeType 1.x 錛屼絾鏄垜浠彲浠ユ彁渚涗竴涓簩榪涘埗鍏煎灞備嬌寰楀簲鐢ㄧ▼搴忛噸閾炬帴鍒版柊鐗堟湰銆傛垜浠渶緇堟斁寮冧簡榪欑鎯蟲硶鍥犱負涓や釜鐗堟湰鍙互鍏卞瓨鍦ㄤ竴涓郴緇熶腑銆傦紙娌℃湁鍛藉悕鍐茬獊錛?/span>

FT2 API 姣?/span> 1.x 綆鍗曚笖寮哄ぇ錛屾墍浠ユ垜浠紦鍔變綘閲囩敤鏂扮増鏈紝榪欐牱鍙互浣夸綘鍑忓皯寰堝涓嶅繀瑕佺殑宸ヤ綔銆?/span>

7銆?span style="FONT: 7pt 'Times New Roman'">聽 鏄惁鍙互浣跨敤 FreeType2 緙栬緫瀛椾綋鎴栬呭垱寤烘柊瀛椾綋錛?/span>

絳旀鏄槑紜殑錛氫笉鍙互銆傚洜涓鴻搴撹璁℃槑紜紝鐢ㄨ緝灝戜唬鐮佸拰鍐呭瓨璇誨彇瀛椾綋鏂囦歡銆傛墍浠ユ垜浠笉鎵撶畻浠ヤ換浣曟柟寮忓湪瀛椾綋寮曟搸閲岄潰鏀寔緙栬緫鎴栬呭垱寤哄姛鑳斤紝鍥犱負榪欐牱灝嗗鑷存暣涓唬鐮侀噸鍐欍傝繖騫朵笉鎰忓懗鎴戜滑灝嗘潵涓嶄細寮曞叆瀛椾綋緙栬緫 / 鍒涘緩鍔熻兘搴擄紝榪欏彇鍐充簬闇姹傦紙鎴栬呰鏈夊灝戜漢鎰挎剰涓烘涔板崟錛夈?/span>

鍦ㄦ垜浠寮忓彂甯冨墠涓嶈鍦ㄨ繖鏂歸潰榪涜鎻f祴錛屽鎴戜滑鑰岃█榪欎釜欏圭洰瀛樺湪鍏朵粬涓浜涙洿閲嶈鐨勯儴鍒嗛渶瑕佽В鍐籌紙鍍忔枃瀛楀竷灞銆佹枃鏈紦瀛橈級銆?/span>

緙栬瘧 & 閰嶇疆

1銆?span style="FONT: 7pt 'Times New Roman'">聽 濡備綍緙栬瘧 FreeType2 搴擄紵

鍙互閲囧彇澶氱緙栬瘧鏂瑰紡錛屽湪 freetype2/docs/build 涓嬫湁璇︾粏璇存槑鏂囨。銆?/span>

榪欓噷浠嬬粛鏈綆鍗曠殑鍩轟簬 VS IDE 鐨勭紪璇戞柟寮忋?/span> freetype\builds\win32\visualc 涓嬫湁 VC6 鍜?/span> VC7.1 鐨勫伐浣滃尯鏂囦歡銆?/span> VC6 鎵撳紑鍚庣洿鎺ョ紪璇戯紝鏈夊嚑涓鍛娿?br />


鍏夌湅鎴栬鏃犳硶鍒版劅鎬ц璇嗭紝浜庢槸鏉ヤ袱涓猟emo銆傜綉涓婃瘮杈冨皯錛屾垜鏄弬鑰僴ehe鏁欑▼鍐欑殑銆傛諱綋鏉ヨ浼氱畝鍗曚嬌鐢ㄤ簡錛屽鏋滄兂娣卞叆浜嗚В鎬曟槸闈炵湅浠栫殑document涓嶅彲銆?br />綆鍗曚嬌鐢ㄧず渚?/span>

FT_Library聽聽聽聽pFTLib聽聽聽聽聽聽聽聽 = 聽NULL;
聽聽聽聽FT_Face聽聽聽聽聽聽聽聽pFTFace聽聽聽聽聽聽聽聽
= 聽NULL;
聽聽聽聽FT_Error聽聽聽聽error聽聽聽聽聽聽聽聽
= 0 ;
聽聽聽聽
// 聽Init聽FreeType聽Lib聽to聽manage聽memory
聽聽聽聽error聽 = 聽FT_Init_FreeType( & pFTLib);
聽聽聽聽
if (error)
聽聽聽聽
{
聽聽聽聽聽聽聽聽pFTLib聽
= 0 ;
聽聽聽聽聽聽聽聽printf(
" There聽is聽some聽error聽when聽Init聽Library " );
聽聽聽聽聽聽聽聽
return - 1 ;
聽聽聽聽}


聽聽聽聽
// 聽create聽font聽face聽from聽font聽file
聽聽聽聽error聽 = 聽FT_New_Face(pFTLib,聽 " C:\\WINDOWS\\Fonts\\arial.ttf " ,聽 0 ,聽 & pFTFace);
聽聽聽聽
if ( ! error)
聽聽聽聽
{
聽聽聽聽聽聽聽聽FT_Set_Char_Size(pFTFace,聽
16 << 6 ,聽 16 << 6 ,聽 300 ,聽 300 );
聽聽聽聽聽聽聽聽FT_Glyph聽聽聽聽glyph;
聽聽聽聽聽聽聽聽
// 聽load聽glyph聽'C'
聽聽聽聽聽聽聽聽FT_Load_Glyph(pFTFace,聽FT_Get_Char_Index(pFTFace,聽 67 ),聽FT_LOAD_DEFAULT);
聽聽聽聽聽聽聽聽error聽
= 聽FT_Get_Glyph(pFTFace -> glyph,聽 & glyph);
聽聽聽聽聽聽聽聽
if ( ! error)
聽聽聽聽聽聽聽聽
{
聽聽聽聽聽聽聽聽聽聽聽聽
// 聽convert聽glyph聽to聽bitmap聽with聽256聽gray
聽聽聽聽聽聽聽聽聽聽聽聽FT_Glyph_To_Bitmap( & glyph,聽ft_render_mode_normal,聽 0 ,聽 1 );
聽聽聽聽聽聽聽聽聽聽聽聽FT_BitmapGlyph聽聽聽聽bitmap_glyph聽
= 聽(FT_BitmapGlyph)glyph;
聽聽聽聽聽聽聽聽聽聽聽聽FT_Bitmap
& 聽聽聽聽bitmap聽 = 聽bitmap_glyph -> bitmap;
聽聽聽聽聽聽聽聽聽聽聽聽
for ( int 聽i = 0 ;聽i < bitmap.rows;聽 ++ i)
聽聽聽聽聽聽聽聽聽聽聽聽
{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
for ( int 聽j = 0 ;聽j < bitmap.width;聽 ++ j)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
// 聽if聽it聽has聽gray>0聽we聽set聽show聽it聽as聽1,聽o聽otherwise
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽printf( " %d " ,聽bitmap.buffer[i * bitmap.width + j] ? 1 : 0 );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽printf(
" \n " );
聽聽聽聽聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽聽聽聽聽
// 聽free聽glyph
聽聽聽聽聽聽聽聽聽聽聽聽FT_Done_Glyph(glyph);
聽聽聽聽聽聽聽聽聽聽聽聽glyph聽
= 聽NULL;
聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽
// 聽free聽face
聽聽聽聽聽聽聽聽FT_Done_Face(pFTFace);
聽聽聽聽聽聽聽聽pFTFace聽
= 聽NULL;
聽聽聽聽}


聽聽聽聽
// 聽free聽FreeType聽Lib
聽聽聽聽FT_Done_FreeType(pFTLib);
聽聽聽聽pFTLib聽
= 聽NULL;


HUYU 2006-11-10 23:00 鍙戣〃璇勮
]]>
浠庣瑧璇濅腑鎮熷嚭C++寮鍙戠鐞嗕箣"閬? http://m.shnenglu.com/HUUYUU/archive/2006/10/30/14352.htmlHUYUHUYUMon, 30 Oct 2006 00:49:00 GMThttp://m.shnenglu.com/HUUYUU/archive/2006/10/30/14352.htmlhttp://m.shnenglu.com/HUUYUU/comments/14352.htmlhttp://m.shnenglu.com/HUUYUU/archive/2006/10/30/14352.html#Feedback0http://m.shnenglu.com/HUUYUU/comments/commentRss/14352.htmlhttp://m.shnenglu.com/HUUYUU/services/trackbacks/14352.html1. 紼嬪簭鍛樺啓鍑鴻嚜璁や負娌℃湁Bug鐨勪唬鐮併?

2. 杞歡嫻嬭瘯錛屽彂鐜頒簡20涓狟ug銆?

3. 紼嬪簭鍛樹慨鏀逛簡10涓狟ug錛屽茍鍛婅瘔嫻嬭瘯緇勫彟澶?0涓笉鏄疊ug銆?

4. 嫻嬭瘯緇勫彂鐜板叾涓?涓敼鍔ㄦ牴鏈棤娉曞伐浣滐紝鍚屾椂鍙堝彂鐜頒簡15涓柊Bug銆?

5. 閲嶅3嬈℃楠?鍜屾楠?銆?

6. 閴翠簬甯傚満鏂歸潰鐨勫帇鍔涳紝涓轟簡閰嶅悎褰撳垵鍒跺畾鐨勮繃鍒嗕箰瑙傜殑鍙戝竷鏃墮棿琛紝浜у搧緇堜簬涓婂競浜嗐?

7. 鐢ㄦ埛鍙戠幇浜?37涓柊Bug銆?

8. 宸茬粡棰嗕簡欏圭洰濂栭噾鐨勭▼搴忓憳涓嶇煡璺戝埌鍝噷鍘諱簡銆?

9. 鏂扮粍寤虹殑欏圭洰緇勪慨姝d簡宸笉澶氬叏閮?37涓狟ug錛屼絾鍙堝彂鐜頒簡456涓柊Bug銆?

10. 鏈鍒濋偅涓▼搴忓憳浠庢枑嫻庣粰楗卞彈鎷栨瑺宸ヨ祫涔嬭嫤鐨勬祴璇曠粍瀵勬潵浜嗕竴寮犳槑淇$墖銆傛暣涓祴璇曠粍闆嗕綋杈炶亴.

11. 鍏徃琚珵浜夊鎵嬫伓鎰忔敹璐傛敹璐椂錛岃蔣浠剁殑鏈緇堢増鏈寘鍚?83涓狟ug銆?

12. 鏂癈EO璧伴┈涓婁換銆傚叕鍙擱泧浜嗕竴鍚嶆柊紼嬪簭鍛橀噸鍐欒杞歡銆?

13. 紼嬪簭鍛樺啓鍑鴻嚜璁や負娌℃湁Bug鐨勪唬鐮併?

銆銆瑕佹垜璇達紝濡傛灉鐪熸湁榪欐牱鐨勫叕鍙革紝涓嶅掗棴瀵逛笉璧蜂漢姘戙?

銆榪欎釜絎戣瘽浠庣▼搴忓憳寮濮嬶紝鍒扮▼搴忓憳緇撴潫錛屼粠澶村埌灝鵑兘鍦ㄨ紼嬪簭鍛樼殑涓嶆槸銆備絾鏄垜瑕佽鐨勬槸錛岃繖瀹屽叏鏄鐞嗚呯殑澶辮觸錛屼粠鏁翠釜榪囩▼涓紝鐪嬩笉鍒頒換浣曠鐞嗗伐浣溿傝繖縐嶇鐞嗚呬笉浣嗘棤鐭ユ棤鑳斤紝榪樺緢鏃犺燴斺斿皢鑷繁鐨勫け璐ヨ矗浠繪帹緇欑▼搴忓憳銆?

銆1銆佺▼搴忓憳鍑粈涔堣瘉鏄庝粬鐨勪唬鐮佹病鏈塀UG錛熸湁Test case鍚楋紵鏈塁ode review鍚楋紵榪欎釜鐜妭綆$悊緙哄け銆?

銆2銆佹祴璇曞彂鐜癇UG鏈夎繘琛孊UG綆$悊鍚楋紵鏈夎窡韙悧錛熻繖涓幆鑺傜鐞嗙己澶便?br />銆3銆佸嚟浠涔堣瘉鏄庣▼搴忓憳宸茬粡鎶婇偅10涓狟UG淇敼濂戒簡錛熷彟10涓張涓轟粈涔堜笉鏄疊UG錛烞UG鐨勮瘎浠鋒爣鍑嗛毦閬撴槸紼嬪簭鍛樿浜嗙畻錛熻繖涓幆鑺傜鐞嗙己澶便?

銆4銆?涓笉鑳藉伐浣滅殑BUG淇敼闂鏈夋病鏈夎拷絀惰矗浠伙紵澧炲姞鏂癇UG鏄慨鏀硅繃紼嬩腑涓嶅彲閬垮厤鐨勪簨鎯咃紝浣嗘槸濡傛灉鏈夋湁鏁堢殑鍗曞厓嫻嬭瘯鏈哄埗錛屽彲浠ュぇ澶у噺灝戣繖縐嶆儏鍐點傝繖涓幆鑺傜鐞嗙己澶便?

銆5銆佽凱浠f槸姝e父鐨勶紝浣嗘槸闂澶勭悊浜庡彂鏁h屼笉鏄敹鏁涘彂灞曪紝鍙娌℃湁鏈夋晥鐨勭鐞嗚皟鎺с傝繖涓幆鑺傜鐞嗙己澶便?

銆6銆佽繃浜庝箰瑙傜殑鏃墮棿琛ㄥ拰涓嶅彲鑳借揪鍒扮殑鏈鍚庢湡闄愶紝閮借〃鐜板嚭綆$悊鑰呯殑鏃犵煡鍜屾棤鑳姐傝屽湪榪欐牱鐨勬儏鍐典笅寮鴻鎺ㄥ嚭浜у搧錛岄偅灝辨槸鏃犵煡鑰呮棤鐣忎簡銆?

銆7銆佽繖鏄鐢ㄦ埛鐨勪笉璐熻矗浠伙紝綆$悊鑰呰璐熸渶澶х殑璐d換銆?

銆8銆佽繖鏍風殑鎯呭喌榪樿兘鍙戦」鐩閲戯紝鍙兘璇寸鐞嗚呬笉鏄竴鑸殑鎰氳牏銆?

銆9銆佺鐞嗗伐浣滄病鏈変換浣曠殑鏀硅繘錛岄棶棰樹粛鐒跺浜庡彂鏁h凱浠g姸鎬併傜鐞嗗伐浣滀緷鐒舵病鏈夊埌浣嶃?

銆10銆佹嫋嬈犳祴璇曢儴闂ㄥ伐璧勪綋鐜板嚭綆$悊鑰呭璐ㄩ噺綆$悊宸ヤ綔鐨勫拷瑙嗕互鍙婂浜哄姏璧勬簮綆$悊鏂歸潰涓鏃犳墍鐭ャ?

銆11銆侀佽鏀惰喘鑰呬袱涓瓧錛氭椿璇ャ傞佹敹璐呬袱涓瓧錛氱瀻鐪箋?

銆12銆佸彲瑙佹柊綆$悊鑰呬笌鍘熺鐞嗚呭崐鏂ゅ叓涓わ紝閮芥病鏈夎璇嗗埌闂鐨勬牴鏈墍鍦ㄣ備笉榪囦篃鍙湁榪欐牱鐨勭鐞嗚呮墠浼氫綔鍑烘敹璐繖縐嶅叕鍙哥殑鍐崇瓥銆?

銆13銆佸巻鍙茬殑閲嶆紨鏄繀鐒剁殑銆?

銆涓涓甯哥殑浼佷笟鎴栨槸欏圭洰錛屽叾榪愪綔蹇呴』搴旇鏄驚鐜悜涓婅繘琛岀殑銆傝屼繚闅滆繖縐嶈繍琛岀殑宸ヤ綔灝辨槸綆$悊銆傝岀鐞嗗伐浣滅殑涓昏鍐呭灝辨槸鎺у埗錛屽寘鎷帶鍒跺驚鐜殑鑺傚鈥斺斾笉鑳藉お蹇篃涓嶈兘澶參錛屾帶鍒跺彂灞曠殑鏂瑰悜鈥斺斿彧鑳藉悜涓婁笉鑳藉悜涓嬶紝鎺у埗榪愪綔鐨勭ǔ瀹氣斺斾笉鑳藉ぇ璧峰ぇ钀芥垨鏃惰仛鏃舵暎絳夈?br />銆鑰岃繖涓鍒囷紝鍦ㄨ繖涓緥瀛愪腑閮界湅涓嶅埌銆?

銆鍦ㄨ繖涓瑧璇濈殑渚嬪瓙涓紝涓鍒囬兘鏄互寮鍙戝伐浣滃湪椹卞姩錛岃繖棣栧厛灝辨槸涓涓柟鍚戞ч敊璇紝浜у搧鏄負鐢ㄦ埛鏈嶅姟鐨勶紝褰撶劧搴旇鏄互鐢ㄦ埛鍜屽競鍦轟綔涓洪┍鍔紝騫朵笖緇撳悎鑷韓鐨勮兘鍔涙渶緇?紜畾宸ヤ綔鐨勯噸鐐廣傝繖涓閿欒鎶樺皠鍑虹鐞嗚呭琚鐞嗙殑鍐呭寰堜笉浜嗚В錛屽彧濂戒換鐢辨瘮杈冧簡瑙g殑紼嬪簭鍛樻憜甯冣斺斾簨瀹炰笂浠栦滑闄や簡鎶鏈紝騫朵笉浼氫簡瑙f洿澶氥?

銆涓涓鐞嗚呭鏋滃鑷繁鎵綆$悊鐨勫唴瀹逛笉浜嗚В錛屼粬灝變笉鍙兘綆$悊寰楀ソ銆?

銆榪欐槸涓浠舵鏃犵枒闂殑浜嬶紝鍙槸鍥藉唴鐨勮蔣浠朵笟浼間箮鎬繪槸涓嶇浉淇¤繖涓鐐廣備腑鍥借蔣浠朵笟涓祦姣掓渶娣辯殑璋庤█涔嬩竴灝辨槸錛?

銆綆$悊鑰呭彧瑕佹噦綆$悊灝卞彲浠ワ紝涓嶉渶瑕佹噦鎶鏈?

鍏跺疄榪欎笉榪囨槸閭d簺鏃犵煡鏃犺兘鏃犺葷殑綆$悊鑰呬負浜嗛獥閽辮岀紪鍑烘潵鐨勶紝鐩鎬俊榪欏彞璇濈殑浜哄繀灝嗕粯鍑洪噾閽辯殑浠d環銆?

銆鍏舵鏄川閲忕鐞嗐傚熀鏈殑璐ㄩ噺綆$悊甯歌瘑鍛婅瘔鎴戜滑錛屾瘡嬈″驚鐜粨鏉熷墠錛屾渶閲嶇殑宸ヤ綔灝辨槸鎬葷粨鏀硅繘銆傚彧鏈夎繖鏍鋒墠鑳戒繚璇佸驚鐜繍浣滄槸鍚戜笂鍙戝睍錛岃屼笉鏄け鍘繪帶鍒跺湴鍚戜笅鍙戝睍銆?涔熷彧鏈夋湁鏁堢殑璐ㄩ噺綆$悊錛屾墠鑳戒繚璇佽凱浠h繃紼嬫槸鏀舵暃鍙戝睍錛屽茍鏈緇堣揪鍒扮洰鏍囥備絾鍦ㄨ繖涓緥瀛愪腑錛岃繖涓儴鍒嗘樉鐒舵槸緙哄け鐨勨斺斿叾涓櫧鐒舵湁嫻嬭瘯閮ㄩ棬錛屼絾鏄粬浠殑浣滅敤浠呬粎 鏄川閲忕鐞嗕腑鐨勮川閲忔嫻嬬幆鑺傦紝綆$悊閮ㄥ垎榪樻槸緙哄け鐨勩?

銆鐒跺悗鏄漢鍔涜祫婧愮鐞嗐傝蔣浠跺紑鍙戞槸涓欏瑰姵鍔ㄥ瘑闆嗗瀷鐨勫伐浣滐紝铏界劧榪欐槸鑴戝姏鍔沖姩錛屼絾鍚屾牱鎰忓懗鐫浜哄湪鍥犵礌鍦ㄥ叾涓崰鏈夊喅瀹氭х殑鍦頒綅銆傝屼緥瀛愪腑鏈敼瀹孊UG鐨勭▼ 搴忓憳鎷垮埌欏圭洰濂栭噾錛岃屽悓鏍瘋緵鑻﹀伐浣滅殑嫻嬭瘯浜哄憳鍗磋鎷栨瑺钖祫錛岄櫎浜嗚〃鐜板嚭綆$悊鑰呭浠栦滑鐨勫伐浣滃唴瀹圭殑涓嶄簡瑙o紝浠ュ強瀵硅川閲忕鐞嗗伐浣滅殑涓嶉噸瑙嗕互澶栵紝榪樿〃鐜板嚭綆$悊鑰?瀹屽叏涓嶄細綆′漢錛岃繖鏄竴縐嶈皨鏉鍥㈤槦鐨勮涓衡斺旇皨鏉涓涓洟闃熻繙姣斿緩璁捐瀹規槗寰楀銆?

銆鏈鍚庯紝榪欎釜澶辮觸鐨勭鐞嗚呮妸浠栫殑緇忓巻緙栨垚榪欎釜絎戣瘽錛岃澶у鐪嬪埌浠栬紼嬪簭鍛樹滑瀹沖緱澶氭儴錛屾妸紼嬪簭鍛樺欖斿寲涓轟竴緹ら獥瀛愩備絾鍙紼嶆噦綆$悊鐨勪漢綆鍗曞垎鏋愪竴涓嬪氨鍙互鐪嬪嚭鏉ワ紝鍙笉榪囨槸榪欎釜浜虹殑鏃犵煡鍜屾棤鑳介犳垚浜嗕粬鐜板湪鐨勭粨鏋滐紝鑰屾妸璐d換鎺ㄧ粰鍒漢鐨勮涓烘洿鏄〃鐜板嚭浠栫殑鏃犺匯?

銆浣滀負韜眳楂樹綅鐨勭鐞嗚咃紝濡傛灉榪炲簲璇ユ壙鎷呯殑璐d換閮借鎺ㄥ嵏錛屼粬浠繕鑳借儨浠諱粈涔堜簨鎯呭憿?



HUYU 2006-10-30 08:49 鍙戣〃璇勮
]]>
鍏蟲敞瀵筎inyXML鐨勫簲鐢?/title><link>http://m.shnenglu.com/HUUYUU/archive/2006/10/13/13638.html</link><dc:creator>HUYU</dc:creator><author>HUYU</author><pubDate>Fri, 13 Oct 2006 05:56:00 GMT</pubDate><guid>http://m.shnenglu.com/HUUYUU/archive/2006/10/13/13638.html</guid><wfw:comment>http://m.shnenglu.com/HUUYUU/comments/13638.html</wfw:comment><comments>http://m.shnenglu.com/HUUYUU/archive/2006/10/13/13638.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/HUUYUU/comments/commentRss/13638.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/HUUYUU/services/trackbacks/13638.html</trackback:ping><description><![CDATA[鍏蟲敞瀵筎inyXML鐨勫簲鐢?br /><a ><font color="#3f3f9f">http://sourceforge.net/projects/tinyxml/<br /></font></a><img src ="http://m.shnenglu.com/HUUYUU/aggbug/13638.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/HUUYUU/" target="_blank">HUYU</a> 2006-10-13 13:56 <a href="http://m.shnenglu.com/HUUYUU/archive/2006/10/13/13638.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>strlen & strcmphttp://m.shnenglu.com/HUUYUU/archive/2006/10/04/13288.htmlHUYUHUYUTue, 03 Oct 2006 16:02:00 GMThttp://m.shnenglu.com/HUUYUU/archive/2006/10/04/13288.htmlhttp://m.shnenglu.com/HUUYUU/comments/13288.htmlhttp://m.shnenglu.com/HUUYUU/archive/2006/10/04/13288.html#Feedback0http://m.shnenglu.com/HUUYUU/comments/commentRss/13288.htmlhttp://m.shnenglu.com/HUUYUU/services/trackbacks/13288.htmlunsigned int strlenW(const wchar_t *wcs)
{
聽const wchar_t *eos = wcs;

聽while (*eos)
聽聽聽聽 ++eos;

聽return eos-wcs;
}


int strcmpW(const wchar_t *pwc1, const wchar_t *pwc2)
{
聽int ret = 0;

聽while ( !(ret = *pwc1 - *pwc2) && *pwc2)
聽聽++pwc1, ++pwc2;
聽return ret;
}



HUYU 2006-10-04 00:02 鍙戣〃璇勮
]]>
濡備綍璇嗗埆瀛楃涓茬殑緙栫爜錛?/title><link>http://m.shnenglu.com/HUUYUU/archive/2006/10/04/13287.html</link><dc:creator>HUYU</dc:creator><author>HUYU</author><pubDate>Tue, 03 Oct 2006 16:01:00 GMT</pubDate><guid>http://m.shnenglu.com/HUUYUU/archive/2006/10/04/13287.html</guid><wfw:comment>http://m.shnenglu.com/HUUYUU/comments/13287.html</wfw:comment><comments>http://m.shnenglu.com/HUUYUU/archive/2006/10/04/13287.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/HUUYUU/comments/commentRss/13287.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/HUUYUU/services/trackbacks/13287.html</trackback:ping><description><![CDATA[ <div id="hvzpftn" class="postbody">濡傛灉鍝竴澶╀綘鐨勭▼搴忔敹鍒頒竴孌典笉鏄庣紪鐮佺殑瀛楃涓詫紝鎴栬呭埆浜虹粰浜嗕竴涓綘鐪嬩笉鎳傜殑鏂囨湰鏂囦歡錛屼綘搴旇濡備綍鍘昏瘑鍒瓧絎︿覆鐨勭紪鐮佸憿錛?br /><br />涓縐嶆槸紼嬪簭涓敤鐨勬柟娉曪紝鍙互浣跨敤ICU涔嬬被鐨勫簱鏉ュ府浣犺瘑鍒紝濡傛灉浣犵殑瀛楃涓茶秺闀匡紝瀹冩墍鑳界寽鍒扮殑姒傜巼灝辮秺澶с?br /><br />鍙﹀涓縐嶆柟娉曟槸浣跨敤IE鏉ュ府鍔╀綘鏌ョ湅銆備嬌鐢↖E鎵撳紑涓嶆槑緙栫爜鐨勬枃浠訛紝鐒跺悗閫夋嫨Encoding錛屼笉鍋滅殑鍒囨崲緙栫爜錛屽熀鏈笂鐪嬭搗鏉ュ儚鏂囧瓧鐨勬椂鍊欙紝灝辨槸閭d釜緙栫爜浜?).榪欎釜鏂規硶寰堢畝鍗曪紝姣旇緝瀹炵敤銆?br /><br />鍙﹀瀵逛簬unicode鐨勭紪鐮侊紝瑙傚療鍏禕OM錛屼篃鏈夊姪浜庝綘鍘葷寽嫻嬬紪鐮併?br />UTF-8: <strong>EF BB BF</strong> E6 B5 8B E8 AF 95 31 32 33 34<br />UTF-16: <strong>FF FE</strong> 4B 6D D5 8B 31 00 32 00 33 00 34 00<br />UTF-16 Big endian : <strong>FE FF</strong> 6D 4B 8B D5 00 31 00 32 00 33 00 34<br /><br /><br />鏈鍚庨檮涓婁袱涓皬宸ュ叿錛岃兘甯綘鐢熸垚鍚勭鏂囧瓧鐨勫瓧絎﹀拰璇嗗埆瀛楃鍦ㄤ笉鍚宑ode page涓嬬殑緙栫爜銆俲ust have fun<br /><br /><a href="/Files/sandy/encoding_tools.rar">http://m.shnenglu.com/Files/sandy/encoding_tools.rar</a><br /></div> <img src ="http://m.shnenglu.com/HUUYUU/aggbug/13287.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/HUUYUU/" target="_blank">HUYU</a> 2006-10-04 00:01 <a href="http://m.shnenglu.com/HUUYUU/archive/2006/10/04/13287.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>c++涓殑string鐢ㄦ硶(涓?http://m.shnenglu.com/HUUYUU/archive/2006/09/04/12018.htmlHUYUHUYUMon, 04 Sep 2006 10:49:00 GMThttp://m.shnenglu.com/HUUYUU/archive/2006/09/04/12018.htmlhttp://m.shnenglu.com/HUUYUU/comments/12018.htmlhttp://m.shnenglu.com/HUUYUU/archive/2006/09/04/12018.html#Feedback0http://m.shnenglu.com/HUUYUU/comments/commentRss/12018.htmlhttp://m.shnenglu.com/HUUYUU/services/trackbacks/12018.html闃呰鍏ㄦ枃

HUYU 2006-09-04 18:49 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              日韩视频在线免费| 99av国产精品欲麻豆| 久久电影一区| 夜夜嗨网站十八久久| 欧美 日韩 国产 一区| 国产亚洲综合在线| 亚洲欧美日韩精品久久奇米色影视 | 欧美多人爱爱视频网站| 久久狠狠亚洲综合| 国产一区二区三区观看| 欧美中文字幕视频| 午夜亚洲性色视频| 国产欧美日韩亚洲| 久久国产精品一区二区三区| 亚洲中字在线| 国产欧美日韩不卡免费| 久久9热精品视频| 欧美一区二区在线观看| 国产真实乱偷精品视频免| 久久精品国产91精品亚洲| 亚洲欧美www| 黄色一区二区三区| 欧美高清视频一区二区| 欧美91大片| 一区二区日韩精品| 亚洲已满18点击进入久久| 国产日本欧美在线观看| 久久精品成人一区二区三区| 欧美在线日韩精品| 亚洲黄色片网站| 91久久精品国产91久久性色tv | 亚洲肉体裸体xxxx137| 亚洲国产精品成人va在线观看| 欧美国产日本在线| 亚洲影院在线观看| 久久国产主播精品| 日韩视频久久| 亚洲影院免费观看| 亚洲大片一区二区三区| 亚洲精品乱码| 国产伦精品一区二区三区四区免费 | 一区二区三区四区国产| 亚洲视频网站在线观看| 国产三区精品| 亚洲国产精品第一区二区| 国产精品家教| 欧美成人xxx| 免费看亚洲片| 欧美屁股在线| 久久九九久久九九| 欧美黄污视频| 久久久久国产精品午夜一区| 欧美激情在线免费观看| 欧美一区深夜视频| 欧美激情精品久久久久久黑人 | 欧美日韩精选| 久久久久久久综合日本| 欧美激情第3页| 久久精品日韩| 欧美色视频日本高清在线观看| 久久久久在线观看| 欧美性猛交xxxx乱大交蜜桃| 美女久久网站| 国产精品视频一二三| 亚洲国内自拍| 精品91久久久久| 亚洲在线视频网站| 一区二区三区日韩欧美| 蜜桃av噜噜一区| 久久久久久69| 国产精品自拍三区| 亚洲免费黄色| 亚洲精品影视在线观看| 欧美中文字幕| 午夜在线播放视频欧美| 欧美日韩国产三级| 亚洲国产欧美久久| 亚洲福利久久| 久久久91精品国产一区二区三区| 性欧美办公室18xxxxhd| 国产精品福利在线观看网址| 亚洲精品久久久久久久久久久久| 悠悠资源网亚洲青| 久久福利精品| 久久久国产精彩视频美女艺术照福利| 国产精品国产亚洲精品看不卡15| 91久久久亚洲精品| 亚洲韩日在线| 美女久久网站| 欧美激情在线播放| 亚洲欧洲午夜| 欧美成人午夜激情| 欧美韩日一区| 亚洲精品欧美在线| 欧美韩国日本一区| 亚洲精品三级| 亚洲视频图片小说| 国产精品国产自产拍高清av王其 | 欧美日韩欧美一区二区| 91久久夜色精品国产网站| 亚洲精品黄色| 欧美日韩视频第一区| 9l视频自拍蝌蚪9l视频成人| 中日韩美女免费视频网址在线观看| 欧美黑人多人双交| 99国产精品久久久久久久成人热| 亚洲视频成人| 国产美女一区| 久久精品在线视频| 99亚洲视频| 欧美日韩一区二区在线观看视频| 一二三区精品| 久久精品视频导航| 亚洲第一毛片| 欧美日韩国产经典色站一区二区三区| 亚洲美女免费视频| 欧美一区二区三区四区在线观看| 国产日韩欧美精品综合| 久久久久看片| 亚洲精品久久久久久下一站 | av不卡免费看| 国产精品女人久久久久久| 午夜精品视频在线| 欧美大片一区二区三区| 中文精品在线| 黄色国产精品| 欧美日韩性生活视频| 亚洲一区二区三区中文字幕| 久久婷婷久久一区二区三区| 最新国产拍偷乱拍精品| 国产精品久久久久久模特| 久久天堂成人| 在线亚洲国产精品网站| 免费亚洲电影| 午夜精品久久久久久久男人的天堂| 狠狠综合久久av一区二区小说 | 国产精品亚洲美女av网站| 久久久九九九九| 一区二区三区www| 葵司免费一区二区三区四区五区| 日韩一本二本av| 国产一区二区三区自拍| 欧美日本不卡视频| 久久久久久亚洲综合影院红桃| 99在线精品免费视频九九视| 免费观看在线综合| 亚洲欧美成人网| 亚洲精品乱码久久久久久久久| 国产亚洲精品aa| 欧美亚州韩日在线看免费版国语版| 久久久久国产精品一区| 亚洲一区二区视频在线观看| 亚洲激情啪啪| 另类春色校园亚洲| 亚洲欧美日本另类| 一区二区三区高清在线 | 久久精品99| 亚洲一区二区三区视频| 亚洲人在线视频| 在线成人免费观看| 国产亚洲在线观看| 国产精品综合色区在线观看| 欧美日产一区二区三区在线观看| 久热这里只精品99re8久| 欧美一区二区三区在| 亚洲一区免费| 一区二区三区国产| 日韩一区二区电影网| 亚洲精品乱码| 亚洲美女av在线播放| 亚洲片区在线| 亚洲日本乱码在线观看| 亚洲大片精品永久免费| 麻豆精品精品国产自在97香蕉| 久久精品免费| 久久亚洲综合网| 媚黑女一区二区| 久久久精彩视频| 亚洲欧美在线免费| 另类国产ts人妖高潮视频| 香港久久久电影| 亚洲欧美日韩综合国产aⅴ| 在线亚洲伦理| 亚洲一区三区视频在线观看| 亚洲一区二区三区四区中文| 欧美日韩精品免费看| 久久精品一区蜜桃臀影院| 日韩一级不卡| 国产午夜久久久久| 国产日韩精品一区观看 | 久热这里只精品99re8久| 欧美国产精品v| 欧美在线视频免费| 这里只有精品视频| 亚洲电影成人| 国产视频在线一区二区 | 极品尤物av久久免费看| 国产精品免费网站| 欧美四级伦理在线| 欧美精品一区二区三区四区|