锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
1錛夋湁澶氭佺殑鎯呭喌錛涗細鐢ㄥ埌铏氬嚱鏁幫紝鍩虹被鎸囬拡
2錛夊彲鑳藉拰鍒殑綾誨叡浜紝鎴栬呭彧鏄紩鐢ㄥ埆鐨勭被閲岀殑鏌愪釜瀵硅薄錛屾墍浠ョ敓鍛藉懆鏈熶笉鏄緢紜畾錛堣繖涓彲浠ヨ冭檻鏅鴻兘鎸囬拡錛?
3錛夊ぇ鏁版嵁綾伙紝濡傛灉瀹氫箟鎴愬璞★紝浼氬鑷村綋鍓嶅璞℃棤娉曞湪鏍堝唴鍒涘緩
闃呰鍏ㄦ枃
]]>
T *arrT = new T[16]; // 鏁扮粍
delete aT; // 闈炴暟緇?
delete [] arrT; // 鏁扮粍
aT = new T[1]; // 鏁扮粍
delete aT; // 閿欒錛佸簲璇ラ噰鐢ㄦ暟緇勫艦寮忕殑鎿嶄綔絎?
闃呰鍏ㄦ枃
]]>
// ...
std::sort(names.begin(), names.end());
STL鍙︿竴涓紭闆呬箣澶勫湪浜庨珮搴﹀彲閰嶇疆銆傚湪浠ヤ笂鐨勪唬鐮佷腑錛屼嬌鐢╯tring鐨勫皬浜庯紙<錛夋搷浣滅瀵箆ector涓殑string鍏冪礌榪涜鎺掑簭錛屼絾鍦ㄥ叾瀹冨満鍚堬紝鏈繀鎬繪湁涓涓皬浜庢搷浣滅鍙緵浣跨敤錛岃屼笖鏈夋椂騫朵笉甯屾湜浠ュ崌搴忔柟寮忚繘琛屾帓搴忋?
闃呰鍏ㄦ枃
]]>
闃呰鍏ㄦ枃
]]>
闃呰鍏ㄦ枃
]]>
]]>
]]>
]]>
1. 瀹夎杞歡鍓嶏紝媯鏌ヨ杞歡鏄惁姝e湪榪愯錛屽鏋滄鍦ㄨ繍琛岋紝鍒欐彁紺虹敤鎴鳳紝闇瑕佸厛鍏抽棴錛岀劧鍚庢墠鑳借繘涓姝ユ寜鐓с?
2. 鍗歌澆杞歡鐨勬椂鍊欙紝媯鏌ヨ杞歡鏄惁姝e湪榪愯錛屽鏋滄鍦ㄨ繍琛岋紝鍒欒鍏抽棴鎵嶈兘榪涜鍗歌澆銆?
闃呰鍏ㄦ枃
]]>
]]>
Reusable Library Switch Library Macro(s) Defined
----------------------------------------------------------------
Single Threaded /ML LIBC (none)
Static MultiThread /MT LIBCMT _MT
Dynamic Link (DLL) /MD MSVCRT _MT and _DLL
Debug Single Threaded /MLd LIBCD _DEBUG
Debug Static MultiThread /MTd LIBCMTD _DEBUG and _MT
Debug Dynamic Link (DLL) /MDd MSVCRTD _DEBUG, _MT, and _DLL
MT鍜孧D閮介傜敤浜庡綰跨▼錛屽叾鍖哄埆鏄細
MT涓洪潤鎬侀摼鎺RT錛岃繖鏍風紪璇戝嚭鏉xe鏄嚜鍖呭惈鐨勶紝鎵浠ヤ細鐩稿澶т竴浜涳紝浣嗚繍琛屾椂涓嶇敤鍐峫oad CRT搴撱?br>MD涓哄姩鎬侀摼鎺RT錛岀紪璇戝嚭鏉xe浼氬皬涓浜涳紝榪愯鏃墮渶瑕乴oad CRT錛屾ц兘鏈変竴鐐圭偣鎹熷け銆?/p>
浠諱綍宸ョ▼閮藉簲璇ヤ嬌鐢ㄥ悓鏍風殑CRT Library銆傚嵆瑕佷箞閮芥槸/ML錛岃涔堥兘鏄?MTD, 濡傛綾繪帹銆?/p>
濡傛灉涓涓▼搴忎腑娣峰悎浣跨敤涓嶅悓綾誨瀷鐨凜RT錛屾湁鏃跺彲浠ラ氳繃link錛岃繖鏍蜂細瀛樺湪涓嶅悓CRT鐨刢opy錛屽茍瀵艱嚧浠ヤ笅闂錛?br> 1錛夊湪涓涓猯ib涓璶ew鍑烘潵鍐呭瓨錛屽湪鍙︿竴涓猯ib涓璬elete錛屼細crash銆?br> 2錛変笉鑳藉湪澶氫釜lib涓叡浜玣ile handle銆?br> 3錛変竴涓猯ib涓緗甽ocale錛堟湰鍦板寲鏈夊叧錛夛紝涓嶈兘鍦ㄥ彟涓涓猯ib涓搗浣滅敤銆?/p>
褰撳伐紼嬫瘮杈冨ぇ錛屽寘鍚殑lib寰堝錛岀壒鍒綋鏈夊閮╨ib錛圱hird party library錛夊瓨鍦ㄦ椂錛宭ink寰堝鏄撳彂鐢熶笅闈㈣繖鏍風殑閿欒銆?br>LIBCMTD.lib(chsize.obj) : error LNK2005: __chsize already defined in MSVCRTD.lib(MSVCRTD.dll)
榪欒鏄庯紝浣犵殑宸ョ▼浣跨敤浜嗕笉鍚岀被鍨嬬殑CRT銆傝繖涓椂鍊欓鍏堜竴瀹氳鍧氫俊榪欎釜鍘熷垯錛氭暣涓伐紼嬬敤鍚屾牱鐨凜RT Lib灝卞彲浠ヨВ鍐抽棶棰樸傜劧鍚庤愬績涓涓媯鏌ユ瘡涓猯ib銆?br>濡傛灉鎭版伆鏌愪釜澶栭儴lib鐢∕T錛屽彟涓涓敤MD錛岃繖涓椂鍊欏氨姣旇緝鐥涜嫤銆?br> 濡傛灉鏈変粬浠簮鐮侊紝灝辯紪璇戜竴涓狹T or MD綾誨瀷鐨刲ib錛屼互緇熶竴浣跨敤涓涓被鍨婥RT銆?br> 濡傛灉娌℃湁錛岄偅鍙兘鍙ソ閫夋嫨鍏朵粬鐨刲ib銆?/p>
涓鑸紝鎴戜釜浜轟範鎯皢鎵鏈塴ib閮界紪璇戜負MT銆傚嚭浜庡叾浠栭渶瑕侊紝浼氬悓鏃舵彁渚汳T(MTd)鍜孧D(MDd)涓ょ鐗堟湰銆?/p>
char* strcpy(char* pDest, const char* pSrc)
{
assert((pDest != NULL) && (pSrc != NULL));
char *pTmp = pDest;
while ((*pDest++ = *pSrc++) != '\0')
;
return pTmp;
}
char * strcpy(char * dst, const char * src)
{
char * cp = dst;
while (*cp++ = *src++); /* Copy src over dst */
return dst;
}
char * strchr(const char * string, int ch)
{
while (*string && *string != (char)ch)
{
string++;
}
if (*string == (char)ch;
return (char *)string;
return NULL;
}
int strcmp(const char * src, const char * dst)
{
int ret = 0;
while (!(ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
++src, ++dst;
if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return( ret );
}
size_t strlen(const char * str)
{
const char * eos = str;
while (*eos++);
return (int)(eos - str - 1);
}
char * strstr(const char * str1, const char * str2)
{
char * cp = (char *)str1;
char *s1, *s2;
if (!*str2)
return (char *)str1;
while (*cp)
{
s1 = cp;
s2 = str2;
while (*s1 && *s2 && !(*s1-*s2))
s1++, s2++;
while (!*s2)
return cp;
cp++;
}
return NULL;
}
鍏堣鐪婼etTimer榪欎釜API鍑芥暟鐨勫師鍨?
UINT_PTR SetTimer(
HWND hWnd, // 紿楀彛鍙ユ焺
UINT_PTR nIDEvent, // 瀹氭椂鍣↖D錛屽涓畾鏃跺櫒鏃訛紝鍙互閫氳繃璇D鍒ゆ柇鏄摢涓畾鏃跺櫒
UINT uElapse, // 鏃墮棿闂撮殧,鍗曚綅涓烘縐?br> TIMERPROC lpTimerFunc // 鍥炶皟鍑芥暟
);
渚嬪
SetTimer(m_hWnd,1,1000,NULL); //涓涓?縐掕Е鍙戜竴嬈$殑瀹氭椂鍣?br>鍦∕FC紼嬪簭涓璖etTimer琚皝瑁呭湪CWnd綾諱腑錛岃皟鐢ㄥ氨涓嶇敤鎸囧畾紿楀彛鍙ユ焺浜?/p>
浜庢槸SetTimer鍑芥暟鐨勫師鍨嬪彉涓猴細
UINT SetTimer(UINT nIDEvent,UINT nElapse,void(CALLBACK EXPORT *lpfnTimer)(HWND,UINT ,YINT ,DWORD))
褰撲嬌鐢⊿etTimer鍑芥暟鐨勬椂鍊欙紝灝變細鐢熸垚涓涓鏃跺櫒銆傚嚱鏁頒腑nIDEvent鎸囩殑鏄鏃跺櫒鐨勬爣璇嗭紝涔熷氨鏄悕瀛椼俷Elapse鎸囩殑鏄椂闂撮棿闅旓紝涔熷氨鏄瘡闅斿闀挎椂闂磋Е鍙戜竴嬈′簨浠躲傜涓変釜鍙傛暟鏄竴涓洖璋冨嚱鏁幫紝鍦ㄨ繖涓嚱鏁伴噷錛屾斁鍏ヤ綘鎯寵鍋氱殑浜嬫儏鐨勪唬鐮侊紝浣犲彲浠ュ皢瀹冭瀹氫負NULL錛屼篃灝辨槸浣跨敤緋葷粺榛樿鐨勫洖璋冨嚱鏁幫紝緋葷粺榛樿璁ょ殑鏄痮nTime鍑芥暟銆傝繖涓嚱鏁版庝箞鐢熸垚鐨勫憿錛熶綘闇瑕佸湪闇瑕佽鏃跺櫒鐨勭被鐨勭敓鎴恛nTime鍑芥暟錛氬湪ClassWizard閲岋紝閫夋嫨闇瑕佽鏃跺櫒鐨勭被錛屾坊鍔燱M_TIME娑堟伅鏄犲皠錛屽氨鑷姩鐢熸垚onTime鍑芥暟浜嗐傜劧鍚庡湪鍑芥暟閲屾坊鍔犱唬鐮侊紝璁╀唬鐮佸疄鐜板姛鑳姐傛瘡闅斾竴孌墊椂闂村氨浼氳嚜鍔ㄦ墽琛屼竴嬈°?
渚嬶細
SetTimer(1,1000,NULL);
1錛氳鏃跺櫒鐨勫悕縐幫紱
1000錛氭椂闂撮棿闅旓紝鍗曚綅鏄縐掞紱
NULL錛氫嬌鐢╫nTime鍑芥暟銆?
褰撲笉闇瑕佽鏃跺櫒鐨勬椂鍊欒皟鐢↘illTimer(nIDEvent);
渚嬪錛欿illTimer(1);
褰撹浣跨敤鍥炶皟鍑芥暟鏃訛紝
姝ゆ柟娉曢鍏堝啓涓涓涓嬫牸寮忕殑鍥炶皟鍑芥暟
void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime);
鐒跺悗鍐嶇敤SetTimer(1,100,TimerProc)鍑芥暟鏉ュ緩涓涓畾鏃跺櫒錛岀涓変釜鍙傛暟灝辨槸鍥炶皟鍑芥暟鍦板潃銆?/p>
鎴栬浣犱細闂紝濡傛灉鎴戣鍔犲叆涓や釜鎴栬呬袱涓互涓婄殑 timer鎬庝箞鍔烇紵
緇х畫鐢⊿etTimer鍑芥暟鍚э紝涓婃鐨則imer鐨処D鏄?錛岃繖嬈″彲浠ユ槸2錛?錛?銆傘傘傘?
SetTimer(2,1000,NULL);
SetTimer(3,500,NULL);
鍡紝WINDOWS浼氬崗璋冧粬浠殑銆傚綋鐒秓nTimer鍑芥暟浣撲篃瑕佸彂鐢熷彉鍖栵紝瑕佸湪鍑芥暟浣撳唴娣誨姞姣忎竴涓猼imer鐨勫鐞嗕唬鐮侊細
onTimer(nIDEvent)
{
switch(nIDEvent)
{
case 1:........;
break;
case 2:.......;
break;
case 3:......;
break;
}
}
鍖哄埆錛?/span>涓昏鐨勫尯鍒敱浠ヤ笅鍑犵偣錛?/p>
1銆佺鐞嗘柟寮忎笉鍚岋紱 2銆佺┖闂村ぇ灝忎笉鍚岋紱 3銆佽兘鍚︿駭鐢熺鐗囦笉鍚岋紱 4銆佺敓闀挎柟鍚戜笉鍚岋紱 5銆佸垎閰嶆柟寮忎笉鍚岋紱 6銆佸垎閰嶆晥鐜囦笉鍚岋紱 綆$悊鏂瑰紡錛氬浜庢爤鏉ヨ錛屾槸鐢辯紪璇戝櫒鑷姩綆$悊錛屾棤闇鎴戜滑鎵嬪伐鎺у埗錛涘浜庡爢鏉ヨ錛岄噴鏀懼伐浣滅敱紼嬪簭鍛樻帶鍒訛紝瀹規槗浜х敓memory leak銆?/font> 絀洪棿澶у皬錛氫竴鑸潵璁插湪32浣嶇郴緇熶笅錛屽爢鍐呭瓨鍙互杈懼埌4G鐨勭┖闂達紝浠庤繖涓搴︽潵鐪嬪爢鍐呭瓨鍑犱箮鏄病鏈変粈涔堥檺鍒剁殑銆備絾鏄浜庢爤鏉ヨ錛屼竴鑸兘鏄湁涓瀹氱殑絀洪棿澶у皬鐨勶紝渚嬪錛屽湪VC6涓嬮潰錛岄粯璁ょ殑鏍堢┖闂村ぇ灝忔槸1M錛堝ソ鍍忔槸錛岃涓嶆竻妤氫簡錛夈傚綋鐒訛紝鎴戜滑鍙互淇敼錛?font size=+0> 鎵撳紑宸ョ▼錛屼緷嬈℃搷浣滆彍鍗曞涓嬶細Project->Setting->Link錛屽湪Category 涓変腑Output錛岀劧鍚庡湪Reserve涓瀹氬爢鏍堢殑鏈澶у煎拰commit銆?/font> 娉ㄦ剰錛?font size=+0>reserve鏈灝忓間負4Byte錛?font size=+0>commit鏄繚鐣欏湪铏氭嫙鍐呭瓨鐨勯〉鏂囦歡閲岄潰錛屽畠璁劇疆鐨勮緝澶т細浣挎爤寮杈熻緝澶х殑鍊鹼紝鍙兘澧炲姞鍐呭瓨鐨勫紑閿鍜屽惎鍔ㄦ椂闂淬?/font> 紕庣墖闂錛氬浜庡爢鏉ヨ錛岄綣佺殑new/delete鍔垮繀浼氶犳垚鍐呭瓨絀洪棿鐨勪笉榪炵畫錛屼粠鑰岄犳垚澶ч噺鐨勭鐗囷紝浣跨▼搴忔晥鐜囬檷浣庛傚浜庢爤鏉ヨ錛屽垯涓嶄細瀛樺湪榪欎釜闂錛屽洜涓烘爤鏄厛榪涘悗鍑虹殑闃熷垪錛屼粬浠槸濡傛鐨勪竴涓瀵瑰簲錛屼互鑷充簬姘歌繙閮戒笉鍙兘鏈変竴涓唴瀛樺潡浠庢爤涓棿寮瑰嚭錛屽湪浠栧脊鍑轟箣鍓嶏紝鍦ㄤ粬涓婇潰鐨勫悗榪涚殑鏍堝唴瀹瑰凡緇忚寮瑰嚭錛岃緇嗙殑鍙互鍙傝冩暟鎹粨鏋勶紝榪欓噷鎴戜滑灝變笉鍐嶄竴涓璁ㄨ浜嗐?/font> 鐢熼暱鏂瑰悜錛氬浜庡爢鏉ヨ錛岀敓闀挎柟鍚戞槸鍚戜笂鐨勶紝涔熷氨鏄悜鐫鍐呭瓨鍦板潃澧炲姞鐨勬柟鍚戯紱瀵逛簬鏍堟潵璁詫紝瀹冪殑鐢熼暱鏂瑰悜鏄悜涓嬬殑錛屾槸鍚戠潃鍐呭瓨鍦板潃鍑忓皬鐨勬柟鍚戝闀褲?/font> 鍒嗛厤鏂瑰紡錛氬爢閮芥槸鍔ㄦ佸垎閰嶇殑錛屾病鏈夐潤鎬佸垎閰嶇殑鍫嗐傛爤鏈?font size=+0>2縐嶅垎閰嶆柟寮忥細闈欐佸垎閰嶅拰鍔ㄦ佸垎閰嶃傞潤鎬佸垎閰嶆槸緙栬瘧鍣ㄥ畬鎴愮殑錛屾瘮濡傚眬閮ㄥ彉閲忕殑鍒嗛厤銆傚姩鎬佸垎閰嶇敱alloca鍑芥暟榪涜鍒嗛厤錛屼絾鏄爤鐨勫姩鎬佸垎閰嶅拰鍫嗘槸涓嶅悓鐨勶紝浠栫殑鍔ㄦ佸垎閰嶆槸鐢辯紪璇戝櫒榪涜閲婃斁錛屾棤闇鎴戜滑鎵嬪伐瀹炵幇銆?/font> 鍒嗛厤鏁堢巼錛氭爤鏄満鍣ㄧ郴緇熸彁渚涚殑鏁版嵁緇撴瀯錛岃綆楁満浼氬湪搴曞眰瀵規爤鎻愪緵鏀寔錛氬垎閰嶄笓闂ㄧ殑瀵勫瓨鍣ㄥ瓨鏀炬爤鐨勫湴鍧錛屽帇鏍堝嚭鏍堥兘鏈変笓闂ㄧ殑鎸囦護鎵ц錛岃繖灝卞喅瀹氫簡鏍堢殑鏁堢巼姣旇緝楂樸傚爢鍒欐槸C/C++鍑芥暟搴撴彁渚涚殑錛屽畠鐨勬満鍒舵槸寰堝鏉傜殑錛屼緥濡備負浜嗗垎閰嶄竴鍧楀唴瀛橈紝搴撳嚱鏁頒細鎸夌収涓瀹氱殑綆楁硶錛堝叿浣撶殑綆楁硶鍙互鍙傝冩暟鎹粨鏋?font size=+0>/鎿嶄綔緋葷粺錛夊湪鍫嗗唴瀛樹腑鎼滅儲鍙敤鐨勮凍澶熷ぇ灝忕殑絀洪棿錛屽鏋滄病鏈夎凍澶熷ぇ灝忕殑絀洪棿錛堝彲鑳芥槸鐢變簬鍐呭瓨紕庣墖澶錛夛紝灝辨湁鍙兘璋冪敤緋葷粺鍔熻兘鍘誨鍔犵▼搴忔暟鎹鐨勫唴瀛樼┖闂達紝榪欐牱灝辨湁鏈轟細鍒嗗埌瓚沖澶у皬鐨勫唴瀛橈紝鐒跺悗榪涜榪斿洖銆傛樉鐒訛紝鍫嗙殑鏁堢巼姣旀爤瑕佷綆寰楀銆?/font> 浠庤繖閲屾垜浠彲浠ョ湅鍒幫紝鍫嗗拰鏍堢浉姣旓紝鐢變簬澶ч噺new/delete鐨勪嬌鐢紝瀹規槗閫犳垚澶ч噺鐨勫唴瀛樼鐗囷紱鐢變簬娌℃湁涓撻棬鐨勭郴緇熸敮鎸侊紝鏁堢巼寰堜綆錛涚敱浜庡彲鑳藉紩鍙戠敤鎴鋒佸拰鏍稿績鎬佺殑鍒囨崲錛屽唴瀛樼殑鐢寵錛屼唬浠峰彉寰楁洿鍔犳槀璐點傛墍浠ユ爤鍦ㄧ▼搴忎腑鏄簲鐢ㄦ渶騫挎硾鐨勶紝灝辯畻鏄嚱鏁扮殑璋冪敤涔熷埄鐢ㄦ爤鍘誨畬鎴愶紝鍑芥暟璋冪敤榪囩▼涓殑鍙傛暟錛岃繑鍥炲湴鍧錛?font size=+0>EBP鍜屽眬閮ㄥ彉閲忛兘閲囩敤鏍堢殑鏂瑰紡瀛樻斁銆傛墍浠ワ紝鎴戜滑鎺ㄨ崘澶у灝介噺鐢ㄦ爤錛岃屼笉鏄敤鍫嗐?/font> 铏界劧鏍堟湁濡傛浼楀鐨勫ソ澶勶紝浣嗘槸鐢變簬鍜屽爢鐩告瘮涓嶆槸閭d箞鐏墊椿錛屾湁鏃跺欏垎閰嶅ぇ閲忕殑鍐呭瓨絀洪棿錛岃繕鏄敤鍫嗗ソ涓浜涖?/font> 鏃犺鏄爢榪樻槸鏍堬紝閮借闃叉瓚婄晫鐜拌薄鐨勫彂鐢燂紙闄ら潪浣犳槸鏁呮剰浣垮叾瓚婄晫錛夛紝鍥犱負瓚婄晫鐨勭粨鏋滆涔堟槸紼嬪簭宕╂簝錛岃涔堟槸鎽ф瘉紼嬪簭鐨勫爢銆佹爤緇撴瀯錛屼駭鐢熶互鎯充笉鍒扮殑緇撴灉,灝辯畻鏄湪浣犵殑紼嬪簭榪愯榪囩▼涓紝娌℃湁鍙戠敓涓婇潰鐨勯棶棰橈紝浣犺繕鏄灝忓績錛岃涓嶅畾浠涔堟椂鍊欏氨宕╂帀錛岄偅鏃跺?font size=+0>debug鍙槸鐩稿綋鍥伴毦錛氾級
瀵逛簡錛岃繕鏈変竴浠朵簨錛屽鏋滄湁浜烘妸鍫嗘爤鍚堣搗鏉ヨ錛岄偅瀹冪殑鎰忔濇槸鏍堬紝鍙笉鏄爢錛屽懙鍛碉紝娓呮浜?/font>
]]>