China Open source community
Õ¾ÄÚµ¼º½:

 
 
 
µ±Ç°Î»ÖÃ: Ê×Ò³ >> ³ÌÐòÉè¼Æ >> ÈçºÎÔÚ linux ϼì²âÄÚ´æÐ¹Â©
 

ÈçºÎÔÚ linux ϼì²âÄÚ´æÐ¹Â©

×÷Õߣººéçû (hcode@21cn.com)      À´Ô´£º     ·¢±íʱ¼ä£º2006-03-02     ä¯ÀÀ´ÎÊý£º      ×ֺţº´ó  ÖР Ð¡

±¾ÎÄÕë¶Ô linux Ï嵀 C++ ³ÌÐòµÄÄÚ´æÐ¹Â©µÄ¼ì²â·½·¨¼°ÆäʵÏÖ½øÐÐ̽ÌÖ¡£ÆäÖаüÀ¨ C++ ÖÐµÄ new ºÍ delete µÄ»ù±¾Ô­Àí£¬ÄÚ´æ¼ì²â×ÓϵͳµÄʵÏÖÔ­ÀíºÍ¾ßÌå·½·¨£¬ÒÔ¼°ÄÚ´æÐ¹Â©¼ì²âµÄ¸ß¼¶»°Ìâ¡£×÷ΪÄÚ´æ¼ì²â×ÓϵͳʵÏÖµÄÒ»²¿·Ö£¬ÌṩÁËÒ»¸ö¾ßÓиüºÃµÄʹÓÃÌØÐԵĻ¥³âÌ壨Mutex£©Àà¡£

1£®¿ª·¢±³¾°£º

ÔÚ windows ÏÂʹÓà VC ±à³Ìʱ£¬ÎÒÃÇͨ³£ÐèÒª DEBUG ģʽÏÂÔËÐгÌÐò£¬¶øºóµ÷ÊÔÆ÷½«ÔÚÍ˳ö³ÌÐòʱ£¬´òÓ¡³ö³ÌÐòÔËÐйý³ÌÖÐÔÚ¶ÑÉÏ·ÖÅä¶øÃ»ÓÐÊͷŵÄÄÚ´æÐÅÏ¢£¬ÆäÖаüÀ¨´úÂëÎļþÃû¡¢ÐкÅÒÔ¼°ÄÚ´æ´óС¡£¸Ã¹¦ÄÜÊÇ MFC Framework ÌṩµÄÄÚÖûúÖÆ£¬·â×°ÔÚÆäÀà½á¹¹ÌåϵÄÚ²¿¡£

ÔÚ linux »òÕß unix Ï£¬ÎÒÃÇµÄ C++ ³ÌÐòȱ·¦ÏàÓ¦µÄÊÖ¶ÎÀ´¼ì²âÄÚ´æÐÅÏ¢£¬¶øÖ»ÄÜʹÓà top Ö¸Áî¹Û²ì½ø³ÌµÄ¶¯Ì¬ÄÚ´æ×ܶ¶øÇÒ³ÌÐòÍ˳öʱ£¬ÎÒÃÇÎÞ·¨»ñÖªÈκÎÄÚ´æÐ¹Â©ÐÅÏ¢¡£ÎªÁ˸üºÃµÄ¸¨ÖúÔÚ linux ϳÌÐò¿ª·¢£¬ÎÒÃÇÔÚÎÒÃǵÄÀà¿âÏîÄ¿ÖÐÉè¼Æ²¢ÊµÏÖÁËÒ»¸öÄÚ´æ¼ì²â×Óϵͳ¡£ÏÂÎĽ«¼òÊö C++ ÖÐµÄ new ºÍ delete µÄ»ù±¾Ô­Àí£¬²¢½²ÊöÁËÄÚ´æ¼ì²â×ÓϵͳµÄʵÏÖÔ­Àí¡¢ÊµÏÖÖеļ¼ÇÉ£¬²¢¶ÔÄÚ´æÐ¹Â©¼ì²âµÄ¸ß¼¶»°Ìâ½øÐÐÁËÌÖÂÛ¡£

2£®NewºÍdeleteµÄÔ­Àí

µ±ÎÒÃÇÔÚ³ÌÐòÖÐдÏ new ºÍ delete ʱ£¬ÎÒÃÇʵ¼ÊÉϵ÷ÓõÄÊÇ C++ ÓïÑÔÄÚÖÃµÄ new operator ºÍ delete operator¡£ËùνÓïÑÔÄÚÖþÍÊÇ˵ÎÒÃDz»Äܸü¸ÄÆäº¬Ò壬ËüµÄ¹¦ÄÜ×ÜÊÇÒ»Öµġ£ÒÔ new operator ΪÀý£¬Ëü×ÜÊÇÏÈ·ÖÅä×ã¹»µÄÄڴ棬¶øºóÔÙµ÷ÓÃÏàÓ¦µÄÀàÐ͵Ĺ¹Ô캯Êý³õʼ»¯¸ÃÄÚ´æ¡£¶ø delete operator ×ÜÊÇÏȵ÷ÓøÃÀàÐ͵ÄÎö¹¹º¯Êý£¬¶øºóÊÍ·ÅÄڴ棨ͼ1£©¡£ÎÒÃÇÄܹ»Ê©¼ÓÓ°ÏìÁ¦µÄÊÂʵÉϾÍÊÇ new operator ºÍ delete operator Ö´Ðйý³ÌÖзÖÅäºÍÊÍ·ÅÄÚ´æµÄ·½·¨¡£


new operator Ϊ·ÖÅäÄÚ´æËùµ÷Óõĺ¯ÊýÃû×ÖÊÇ operator new£¬Æäͨ³£µÄÐÎʽÊÇ void * operator new(size_t size); Æä·µ»ØÖµÀàÐÍÊÇ void*£¬ÒòΪÕâ¸öº¯Êý·µ»ØÒ»¸öδ¾­´¦Àí£¨raw£©µÄÖ¸Õ룬δ³õʼ»¯µÄÄÚ´æ¡£²ÎÊý size È·¶¨·ÖÅä¶àÉÙÄڴ棬ÄãÄÜÔö¼Ó¶îÍâµÄ²ÎÊýÖØÔØº¯Êý operator new£¬µ«ÊǵÚÒ»¸ö²ÎÊýÀàÐͱØÐëÊÇ size_t¡£

delete operator ΪÊÍ·ÅÄÚ´æËùµ÷Óõĺ¯ÊýÃû×ÖÊÇ operator delete£¬Æäͨ³£µÄÐÎʽÊÇ void operator delete(void *memoryToBeDeallocated)£»ËüÊÍ·Å´«ÈëµÄ²ÎÊýËùÖ¸ÏòµÄһƬÄÚ´æÇø¡£

ÕâÀïÓÐÒ»¸öÎÊÌ⣬¾ÍÊǵ±ÎÒÃǵ÷Óà new operator ·ÖÅäÄÚ´æÊ±£¬ÓÐÒ»¸ö size ²ÎÊý±íÃ÷ÐèÒª·ÖÅä¶à´óµÄÄÚ´æ¡£µ«Êǵ±µ÷Óà delete operator ʱ£¬È´Ã»ÓÐÀàËÆµÄ²ÎÊý£¬ÄÇô delete operator ÈçºÎÄܹ»ÖªµÀÐèÒªÊͷŸÃÖ¸ÕëÖ¸ÏòµÄÄÚ´æ¿éµÄ´óÐ¡ÄØ£¿´ð°¸ÊÇ£º¶ÔÓÚϵͳ×ÔÓеÄÊý¾ÝÀàÐÍ£¬ÓïÑÔ±¾Éí¾ÍÄÜÇø·ÖÄÚ´æ¿éµÄ´óС£¬¶ø¶ÔÓÚ×Ô¶¨ÒåÊý¾ÝÀàÐÍ£¨ÈçÎÒÃÇ×Ô¶¨ÒåµÄÀࣩ£¬Ôò operator new ºÍ operator delete Ö®¼äÐèÒª»¥Ïà´«µÝÐÅÏ¢¡£

µ±ÎÒÃÇʹÓà operator new Ϊһ¸ö×Ô¶¨ÒåÀàÐͶÔÏó·ÖÅäÄÚ´æÊ±£¬Êµ¼ÊÉÏÎÒÃǵõ½µÄÄÚ´æÒª±Èʵ¼Ê¶ÔÏóµÄÄÚ´æ´óһЩ£¬ÕâЩÄÚ´æ³ýÁËÒª´æ´¢¶ÔÏóÊý¾ÝÍ⣬»¹ÐèÒª¼Ç¼ÕâÆ¬ÄÚ´æµÄ´óС£¬´Ë·½·¨³ÆÎª cookie¡£ÕâÒ»µãÉϵÄʵÏÖÒÀ¾Ý²»Í¬µÄ±àÒëÆ÷²»Í¬¡££¨ÀýÈç MFC Ñ¡ÔñÔÚËù·ÖÅäÄÚ´æµÄÍ·²¿´æ´¢¶ÔÏóʵ¼ÊÊý¾Ý£¬¶øºóÃæµÄ²¿·Ö´æ´¢±ß½ç±êÖ¾ºÍÄÚ´æ´óСÐÅÏ¢¡£g++ Ôò²ÉÓÃÔÚËù·ÖÅäÄÚ´æµÄÍ· 4 ¸ö×Ô¼º´æ´¢Ïà¹ØÐÅÏ¢£¬¶øºóÃæµÄÄÚ´æ´æ´¢¶ÔÏóʵ¼ÊÊý¾Ý¡££©µ±ÎÒÃÇʹÓà delete operator ½øÐÐÄÚ´æÊͷŲÙ×÷ʱ£¬delete operator ¾Í¿ÉÒÔ¸ù¾ÝÕâЩÐÅÏ¢ÕýÈ·µÄÊÍ·ÅÖ¸ÕëËùÖ¸ÏòµÄÄÚ´æ¿é¡£

ÒÔÉÏÂÛÊöµÄÊǶÔÓÚµ¥¸ö¶ÔÏóµÄÄÚ´æ·ÖÅä/ÊÍ·Å£¬µ±ÎÒÃÇΪÊý×é·ÖÅä/ÊÍ·ÅÄÚ´æÊ±£¬ËäÈ»ÎÒÃÇÈÔȻʹÓà new operator ºÍ delete operator£¬µ«ÊÇÆäÄÚ²¿ÐÐΪȴÓв»Í¬£ºnew operator µ÷ÓÃÁËoperator new µÄÊý×é°æµÄÐֵܣ­ operator new[]£¬¶øºóÕë¶Ôÿһ¸öÊý×é³ÉÔ±µ÷Óù¹Ô캯Êý¡£¶ø delete operator ÏȶÔÿһ¸öÊý×é³ÉÔ±µ÷ÓÃÎö¹¹º¯Êý£¬¶øºóµ÷Óà operator delete[] À´ÊÍ·ÅÄÚ´æ¡£ÐèҪעÒâµÄÊÇ£¬µ±ÎÒÃÇ´´½¨»òÊÍ·ÅÓÉ×Ô¶¨ÒåÊý¾ÝÀàÐÍËù¹¹³ÉµÄÊý×éʱ£¬±àÒëÆ÷ΪÁËÄܹ»±êʶ³öÔÚ operator delete[] ÖÐËùÐèÊͷŵÄÄÚ´æ¿éµÄ´óС£¬Ò²Ê¹ÓÃÁ˱àÒëÆ÷Ïà¹ØµÄ cookie ¼¼Êõ¡£

×ÛÉÏËùÊö£¬Èç¹ûÎÒÃÇÏë¼ì²âÄÚ´æÐ¹Â©£¬¾Í±ØÐë¶Ô³ÌÐòÖеÄÄÚ´æ·ÖÅäºÍÊÍ·ÅÇé¿ö½øÐмǼºÍ·ÖÎö£¬Ò²¾ÍÊÇ˵ÎÒÃÇÐèÒªÖØÔØ operator new/operator new[];operator delete/operator delete[] ËĸöÈ«¾Öº¯Êý£¬ÒԽػñÎÒÃÇËùÐè¼ìÑéµÄÄÚ´æ²Ù×÷ÐÅÏ¢¡£

3£®ÄÚ´æ¼ì²âµÄ»ù±¾ÊµÏÖÔ­Àí£º

ÉÏÎÄÌáµ½ÒªÏë¼ì²âÄÚ´æÐ¹Â©£¬¾Í±ØÐë¶Ô³ÌÐòÖеÄÄÚ´æ·ÖÅäºÍÊÍ·ÅÇé¿ö½øÐмǼ£¬ËùÄܹ»²ÉÈ¡µÄ°ì·¨¾ÍÊÇÖØÔØËùÓÐÐÎʽµÄoperator new ºÍ operator delete£¬½Ø»ñ new operator ºÍ delete operator Ö´Ðйý³ÌÖеÄÄÚ´æ²Ù×÷ÐÅÏ¢¡£ÏÂÃæÁгöµÄ¾ÍÊÇÖØÔØÐÎʽ


void* operator new( size_t nSize, char* pszFileName, int nLineNum )
void* operator new[]( size_t nSize, char* pszFileName, int nLineNum )
void operator delete( void *ptr )
void operator delete[]( void *ptr )

ÎÒÃÇΪ operator new ¶¨ÒåÁËÒ»¸öеİ汾£¬³ýÁ˱ØÐëµÄ size_t nSize ²ÎÊýÍ⣬»¹Ôö¼ÓÁËÎļþÃûºÍÐкţ¬ÕâÀïµÄÎļþÃûºÍÐкžÍÊÇÕâ´Î new operator ²Ù×÷·û±»µ÷ÓÃʱËùÔÚµÄÎļþÃûºÍÐкţ¬Õâ¸öÐÅÏ¢½«ÔÚ·¢ÏÖÄÚ´æÐ¹Â©Ê±Êä³ö£¬ÒÔ°ïÖúÓû§¶¨Î»Ð¹Â©¾ßÌåλÖ᣶ÔÓÚ operator delete£¬ÒòΪÎÞ·¨ÎªÖ®¶¨Òåеİ汾£¬ÎÒÃÇÖ±½Ó¸²¸ÇÁËÈ«¾ÖµÄ operator delete µÄÁ½¸ö°æ±¾¡£

ÔÚÖØÔØµÄ operator new º¯Êý°æ±¾ÖУ¬ÎÒÃǽ«µ÷ÓÃÈ«¾ÖµÄ operator new µÄÏàÓ¦µÄ°æ±¾²¢½«ÏàÓ¦µÄ size_t ²ÎÊý´«È룬¶øºó£¬ÎÒÃǽ«È«¾Ö operator new ·µ»ØµÄÖ¸ÕëÖµÒÔ¼°¸Ã´Î·ÖÅäËùÔÚµÄÎļþÃûºÍÐкÅÐÅÏ¢¼Ç¼ÏÂÀ´£¬ÕâÀïËù²ÉÓõÄÊý¾Ý½á¹¹ÊÇÒ»¸ö STL µÄ map£¬ÒÔÖ¸ÕëֵΪ key Öµ¡£µ± operator delete ±»µ÷ÓÃʱ£¬Èç¹ûµ÷Ó÷½Ê½ÕýÈ·µÄ»°£¨µ÷Ó÷½Ê½²»ÕýÈ·µÄÇé¿ö½«ÔÚºóÃæÏêϸÃèÊö£©£¬ÎÒÃǾÍÄÜÒÔ´«ÈëµÄÖ¸ÕëÖµÔÚ map ÖÐÕÒµ½ÏàÓ¦µÄÊý¾ÝÏî²¢½«Ö®É¾³ý£¬¶øºóµ÷Óà free ½«Ö¸ÕëËùÖ¸ÏòµÄÄÚ´æ¿éÊÍ·Å¡£µ±³ÌÐòÍ˳öµÄʱºò£¬map ÖеÄÊ£ÓàµÄÊý¾ÝÏî¾ÍÊÇÎÒÃÇÆóͼ¼ì²âµÄÄÚ´æÐ¹Â©ÐÅÏ¢£­£­ÒѾ­ÔÚ¶ÑÉÏ·ÖÅ䵫ÊÇÉÐδÊͷŵķÖÅäÐÅÏ¢¡£

ÒÔÉϾÍÊÇÄÚ´æ¼ì²âʵÏֵĻù±¾Ô­Àí£¬ÏÖÔÚ»¹ÓÐÁ½¸ö»ù±¾ÎÊÌâûÓнâ¾ö£º

1) ÈçºÎÈ¡µÃÄÚ´æ·ÖÅä´úÂëËùÔÚµÄÎļþÃûºÍÐкţ¬²¢Èà new operator ½«Ö®´«µÝ¸øÎÒÃÇÖØÔØµÄ operator new¡£

2) ÎÒÃǺÎʱ´´½¨ÓÃÓÚ´æ´¢ÄÚ´æÊý¾ÝµÄ map Êý¾Ý½á¹¹£¬ÈçºÎ¹ÜÀí£¬ºÎʱ´òÓ¡ÄÚ´æÐ¹Â©ÐÅÏ¢¡£

ÏȽâ¾öÎÊÌâ1¡£Ê×ÏÈÎÒÃÇ¿ÉÒÔÀûÓà C µÄÔ¤±àÒëºê __FILE__ ºÍ __LINE__£¬ÕâÁ½¸öºê½«ÔÚ±àÒëʱÔÚÖ¸¶¨Î»ÖÃÕ¹¿ªÎª¸ÃÎļþµÄÎļþÃûºÍ¸ÃÐеÄÐкš£¶øºóÎÒÃÇÐèÒª½«È±Ê¡µÄÈ«¾Ö new operator Ìæ»»ÎªÎÒÃÇ×Ô¶¨ÒåµÄÄܹ»´«ÈëÎļþÃûºÍÐкŵİ汾£¬ÎÒÃÇÔÚ×ÓϵͳͷÎļþ MemRecord.h Öж¨Ò壺


#define DEBUG_NEW new(__FILE__, __LINE__ )

¶øºóÔÚËùÓÐÐèҪʹÓÃÄÚ´æ¼ì²âµÄ¿Í»§³ÌÐòµÄËùÓÐµÄ cpp ÎļþµÄ¿ªÍ·¼ÓÈë


#include "MemRecord.h"
#define new DEBUG_NEW

¾Í¿ÉÒÔ½«¿Í»§Ô´ÎļþÖеĶÔÓÚÈ«¾ÖȱʡµÄ new operator µÄµ÷ÓÃÌæ»»Îª new (__FILE__,__LINE__) µ÷Ó㬶ø¸ÃÐÎʽµÄnew operator½«µ÷ÓÃÎÒÃǵÄoperator new (size_t nSize, char* pszFileName, int nLineNum)£¬ÆäÖÐ nSize ÊÇÓÉ new operator ¼ÆËã²¢´«ÈëµÄ£¬¶ø new µ÷ÓõãµÄÎļþÃûºÍÐкÅÊÇÓÉÎÒÃÇ×Ô¶¨Òå°æ±¾µÄ new operator ´«ÈëµÄ¡£ÎÒÃǽ¨ÒéÔÚËùÓÐÓû§×Ô¼ºµÄÔ´´úÂëÎļþÖж¼¼ÓÈëÉÏÊöºê£¬Èç¹ûÓеÄÎļþÖÐʹÓÃÄÚ´æ¼ì²â×Óϵͳ¶øÓеÄûÓУ¬Ôò×Óϵͳ½«¿ÉÄÜÒòÎÞ·¨¼à¿ØÕû¸öϵͳ¶øÊä³öһЩй©¾¯¸æ¡£

ÔÙ˵µÚ¶þ¸öÎÊÌâ¡£ÎÒÃÇÓÃÓÚ¹ÜÀí¿Í»§ÐÅÏ¢µÄÕâ¸ö map ±ØÐëÔÚ¿Í»§³ÌÐòµÚÒ»´Îµ÷Óà new operator »òÕß delete operator ֮ǰ±»´´½¨£¬¶øÇÒÔÚ×îºóÒ»¸ö new operator ºÍ delete operator µ÷ÓÃÖ®ºó½øÐÐй©ÐÅÏ¢µÄ´òÓ¡£¬Ò²¾ÍÊÇ˵ËüÐèÒªÏÈÓÚ¿Í»§³ÌÐò¶ø³öÉú£¬¶øÔÚ¿Í»§³ÌÐòÍ˳öÖ®ºó½øÐзÖÎö¡£Äܹ»°üÈݿͻ§³ÌÐòÉúÃüÖÜÆÚµÄÈ·ÓÐÒ»ÈË--È«¾Ö¶ÔÏó£¨appMemory£©¡£ÎÒÃÇ¿ÉÒÔÉè¼ÆÒ»¸öÀàÀ´·â×°Õâ¸ö map ÒÔ¼°Õâ¶ÔËüµÄ²åÈëɾ³ý²Ù×÷£¬È»ºó¹¹ÔìÕâ¸öÀàµÄÒ»¸öÈ«¾Ö¶ÔÏó£¨appMemory£©£¬ÔÚÈ«¾Ö¶ÔÏó£¨appMemory£©µÄ¹¹Ô캯ÊýÖд´½¨²¢³õʼ»¯Õâ¸öÊý¾Ý½á¹¹£¬¶øÔÚÆäÎö¹¹º¯ÊýÖжÔÊý¾Ý½á¹¹ÖÐÊ£ÓàÊý¾Ý½øÐзÖÎöºÍÊä³ö¡£Operator new Öн«µ÷ÓÃÕâ¸öÈ«¾Ö¶ÔÏó£¨appMemory£©µÄ insert ½Ó¿Ú½«Ö¸Õë¡¢ÎļþÃû¡¢Ðкš¢ÄÚ´æ¿é´óСµÈÐÅÏ¢ÒÔÖ¸ÕëֵΪ key ¼Ç¼µ½ map ÖУ¬ÔÚ operator delete Öе÷Óà erase ½Ó¿Ú½«¶ÔÓ¦Ö¸ÕëÖµµÄ map ÖеÄÊý¾ÝÏîɾ³ý£¬×¢Òâ²»ÒªÍüÁË¶Ô map µÄ·ÃÎÊÐèÒª½øÐл¥³âͬ²½£¬ÒòΪͬһʱ¼ä¿ÉÄÜ»áÓжà¸öÏ߳̽øÐжÑÉϵÄÄÚ´æ²Ù×÷¡£

ºÃÀ²£¬ÄÚ´æ¼ì²âµÄ»ù±¾¹¦ÄÜÒѾ­¾ß±¸ÁË¡£µ«ÊDz»ÒªÍüÁË£¬ÎÒÃÇΪÁ˼ì²âÄÚ´æÐ¹Â©£¬ÔÚÈ«¾ÖµÄ operator new Ôö¼ÓÁËÒ»²ã¼ä½ÓÐÔ£¬Í¬Ê±ÎªÁ˱£Ö¤¶ÔÊý¾Ý½á¹¹µÄ°²È«·ÃÎÊÔö¼ÓÁË»¥³â£¬ÕâЩ¶¼»á½µµÍ³ÌÐòÔËÐеÄЧÂÊ¡£Òò´ËÎÒÃÇÐèÒªÈÃÓû§Äܹ»·½±ãµÄ enable ºÍ disable Õâ¸öÄÚ´æ¼ì²â¹¦ÄÜ£¬±Ï¾¹ÄÚ´æÐ¹Â©µÄ¼ì²âÓ¦¸ÃÔÚ³ÌÐòµÄµ÷ÊԺͲâÊÔ½×¶ÎÍê³É¡£ÎÒÃÇ¿ÉÒÔʹÓÃÌõ¼þ±àÒëµÄÌØÐÔ£¬ÔÚÓû§±»¼ì²âÎļþÖÐʹÓÃÈçϺ궨Ò壺


#include "MemRecord.h"
#if defined( MEM_DEBUG )
#define new DEBUG_NEW
#endif

µ±Óû§ÐèҪʹÓÃÄÚ´æ¼ì²âʱ£¬¿ÉÒÔʹÓÃÈçÏÂÃüÁî¶Ô±»¼ì²âÎļþ½øÐбàÒë


g++ -c -DMEM_DEBUG xxxxxx.cpp

¾Í¿ÉÒÔ enable ÄÚ´æ¼ì²â¹¦ÄÜ£¬¶øÓû§³ÌÐòÕýʽ·¢²¼Ê±£¬¿ÉÒÔÈ¥µô -DMEM_DEBUG ±àÒ뿪¹ØÀ´ disable ÄÚ´æ¼ì²â¹¦ÄÜ£¬Ïû³ýÄÚ´æ¼ì²â´øÀ´µÄЧÂÊÓ°Ïì¡£

ͼ2ËùʾΪʹÓÃÄÚ´æ¼ì²â¹¦Äܺó£¬ÄÚ´æÐ¹Â©´úÂëµÄÖ´ÐÐÒÔ¼°¼ì²â½á¹û


ͼ2

4£®´íÎó·½Ê½É¾³ý´øÀ´µÄÎÊÌâ

ÒÔÉÏÎÒÃÇÒѾ­¹¹½¨ÁËÒ»¸ö¾ß±¸»ù±¾ÄÚ´æÐ¹Â©¼ì²â¹¦ÄܵÄ×Óϵͳ£¬ÏÂÃæÈÃÎÒÃÇÀ´¿´Ò»Ï¹ØÓÚÄÚ´æÐ¹Â©·½ÃæµÄһЩÉÔ΢¸ß¼¶Ò»µãµÄ»°Ìâ¡£

Ê×ÏÈ£¬ÔÚÎÒÃDZàÖÆ c++ Ó¦ÓÃʱ£¬ÓÐʱÐèÒªÔÚ¶ÑÉÏ´´½¨µ¥¸ö¶ÔÏó£¬ÓÐʱÔòÐèÒª´´½¨¶ÔÏóµÄÊý×é¡£¹ØÓÚ new ºÍ delete Ô­ÀíµÄÐðÊöÎÒÃÇ¿ÉÒÔÖªµÀ£¬¶ÔÓÚµ¥¸ö¶ÔÏóºÍ¶ÔÏóÊý×éÀ´Ëµ£¬ÄÚ´æ·ÖÅäºÍɾ³ýµÄ¶¯×÷ÊÇ´ó²»ÏàͬµÄ£¬ÎÒÃÇÓ¦¸Ã×ÜÊÇÕýÈ·µÄʹÓñ˴˴îÅäµÄ new ºÍ delete ÐÎʽ¡£µ«ÊÇÔÚijЩÇé¿öÏ£¬ÎÒÃǺÜÈÝÒ×·¸´íÎ󣬱ÈÈçÈçÏ´úÂ룺


		class Test {};
		¡­¡­
		Test* pAry = new Test[10];//´´½¨ÁËÒ»¸öÓµÓÐ 10 ¸ö Test ¶ÔÏóµÄÊý×é
		Test* pObj = new Test;//´´½¨ÁËÒ»¸öµ¥¶ÔÏó
		¡­¡­
		delete []pObj;//±¾Ó¦Ê¹Óõ¥¶ÔÏóÐÎʽ delete pObj ½øÐÐÄÚ´æÊÍ·Å£¬È´´íÎóµÄʹÓÃÁËÊý
//×éÐÎʽ
		delete pAry;//±¾Ó¦Ê¹ÓÃÊý×éÐÎʽ delete []pAry ½øÐÐÄÚ´æÊÍ·Å£¬È´´íÎóµÄʹÓÃÁ˵¥¶Ô
//ÏóµÄÐÎʽ

²»Æ¥ÅäµÄ new ºÍ delete »áµ¼ÖÂʲôÎÊÌâÄØ£¿C++ ±ê×¼¶Ô´ËµÄ½â´ðÊÇ"䶨Òå"£¬¾ÍÊÇ˵ûÓÐÈËÏòÄã±£Ö¤»á·¢Éúʲô£¬µ«ÊÇÓÐÒ»µã¿ÉÒԿ϶¨£º´ó¶à²»ÊǺÃÊÂÇé--ÔÚijЩ±àÒëÆ÷ÐγɵĴúÂëÖУ¬³ÌÐò¿ÉÄÜ»á±ÀÀ££¬¶øÁíÍâһЩ±àÒëÆ÷ÐγɵĴúÂëÖУ¬³ÌÐòÔËÐ

[1] [2] [3]

±à¼­ webmaster

 
 
 
ÆÀÂÛ
 
 
·¢±í
 
ÐÕÃû£º QQ£º
ÐԱ𣺠ÄÐ Å® MSN£º
E-mail£º Ö÷Ò³£º
ÆÀ·Ö£º 1 2 3 4 5
ÆÀÂÛÄÚÈÝ£º
ÑéÖ¤Â룺
  
  • Çë×ñÊØ¡¶»¥ÁªÍøµç×Ó¹«¸æ·þÎñ¹ÜÀí¹æ¶¨¡·¼°ÖлªÈËÃñ¹²ºÍ¹úÆäËû¸÷ÏîÓйط¨ÂÉ·¨¹æ¡£
  • ÑϽû·¢±íΣº¦¹ú¼Ò°²È«¡¢Ë𺦹ú¼ÒÀûÒæ¡¢ÆÆ»µÃñ×åÍÅ½á¡¢ÆÆ»µ¹ú¼Ò×Ú½ÌÕþ²ß¡¢ÆÆ»µÉç»áÎȶ¨¡¢ÎêÈè¡¢·Ì°ù¡¢½ÌËô¡¢Òù»àµÈÄÚÈÝµÄÆÀÂÛ ¡£
  • Óû§Ðè¶Ô×Ô¼ºÔÚʹÓñ¾Õ¾·þÎñ¹ý³ÌÖеÄÐÐΪ³Ðµ£·¨ÂÉÔðÈΣ¨Ö±½Ó»ò¼ä½Óµ¼Öµģ©¡£
  • ±¾Õ¾¹ÜÀíÔ±ÓÐȨ±£Áô»òɾ³ýÆÀÂÛÄÚÈÝ¡£
  • ÆÀÂÛÄÚÈÝÖ»´ú±íÍøÓѸöÈ˹۵㣬Óë±¾ÍøÕ¾Á¢³¡Î޹ء£
  •  
    ÖйúÔ´ÂëÍø - WWW.YUANMA.ORG - Öйú¿ª·ÅÔ´´úÂëÉçÇø