Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

C/C++ÖÐmallocºÍnewµÄÇø±ð


¡¡¡¡1£¬mallocÓëfreeÊÇC++/CÓïÑԵıê×¼¿âº¯Êý£¬new/deleteÊÇC++µÄÔËËã·û¡£ËüÃǶ¼¿ÉÓÃÓÚÉêÇ붯̬ÄÚ´æºÍÊÍ·ÅÄÚ´æ¡£
¡¡¡¡2£¬¶ÔÓÚ·ÇÄÚ²¿Êý¾ÝÀàÐ͵ĶÔÏó¶øÑÔ£¬¹âÓÃmaloc/freeÎÞ·¨Âú×㶯̬¶ÔÏóµÄÒªÇó¡£¶ÔÏóÔÚ´´½¨µÄͬʱҪ×Ô¶¯Ö´Ðй¹Ô캯Êý£¬¶ÔÏóÔÚÏûÍö֮ǰҪ×Ô¶¯Ö´ÐÐÎö¹¹º¯Êý¡£ÓÉÓÚmalloc/freeÊǿ⺯Êý¶ø²»ÊÇÔËËã·û£¬²»ÔÚ±àÒëÆ÷¿ØÖÆÈ¨ÏÞÖ®ÄÚ£¬²»Äܹ»°ÑÖ´Ðй¹Ô캯ÊýºÍÎö¹¹º¯ÊýµÄÈÎÎñÇ¿¼ÓÓÚmalloc/free.
¡¡¡¡3£¬Òò´ËC++ÓïÑÔÐèÒªÒ»¸öÄÜÍê³É¶¯Ì¬ÄÚ´æ·ÖÅäºÍ³õʼ»¯¹¤×÷µÄÔËËã·ûnew£¬ÒÔÒ»¸öÄÜÍê³ÉÇåÀíÓëÊÍ·ÅÄڴ湤×÷µÄÔËËã·ûdelete.×¢Òânew/delete²»Êǿ⺯Êý¡£
¡¡¡¡4£¬C++³ÌÐò¾­³£Òªµ÷ÓÃCº¯Êý£¬¶øC³ÌÐòÖ»ÄÜÓÃmalloc/free¹ÜÀí¶¯Ì¬ÄÚ´æ
¡¡¡¡new ÊǸö²Ù×÷·û£¬ºÍʲô"+"£¬"-"£¬"="……ÓÐÒ»ÑùµÄµØÎ»¡£
¡¡¡¡mallocÊǸö·ÖÅäÄÚ´æµÄº¯Êý£¬¹©Äãµ÷Óõġ£
¡¡¡¡newÊDZ£Áô×Ö£¬²»ÐèҪͷÎļþÖ§³Ö¡£
¡¡¡¡mallocÐèҪͷÎļþ¿âº¯ÊýÖ§³Ö¡£
¡¡¡¡new ½¨Á¢µÄÊÇÒ»¸ö¶ÔÏó£¬
¡¡¡¡malloc·ÖÅäµÄÊÇÒ»¿éÄÚ´æ¡£
¡¡¡¡new½¨Á¢µÄ¶ÔÏóÄã¿ÉÒÔ°ÑËüµ±³ÉÒ»¸öÆÕͨµÄ¶ÔÏó£¬ÓóÉÔ±º¯Êý·ÃÎÊ£¬²»ÒªÖ±½Ó·ÃÎÊËüµÄµØÖ·¿Õ¼ä
¡¡¡¡malloc·ÖÅäµÄÊÇÒ»¿éÄÚ´æÇøÓò£¬¾ÍÓÃÖ¸Õë·ÃÎʺÃÁË£¬¶øÇÒ»¹¿ÉÒÔÔÚÀïÃæÒÆ¶¯Ö¸Õë¡£
¡¡¡¡¼ò¶øÑÔÖ®£º
¡¡¡¡new ÊÇÒ»¸ö²Ù×÷·û£¬¿ÉÒÔÖØÔØ
¡¡¡¡mallocÊÇÒ»¸öº¯Êý£¬¿ÉÒÔ¸²¸Ç
¡¡¡¡new ³õʼ»¯¶ÔÏ󣬵÷ÓöÔÏóµÄ¹¹Ô캯Êý£¬¶ÔÓ¦µÄdeleteµ÷ÓÃÏàÓ¦µÄÎö¹¹º¯Êý
¡¡¡¡malloc½ö½ö·ÖÅäÄڴ棬free½ö½ö»ØÊÕÄÚ´æ
ת×Ô£ºhttp://tech.ddvip.com/2009-05/1242201392118933.html


Ïà¹ØÎĵµ£º

ÉîÈëÀí½âextern "C"

Ò»¡¢´ÓCÓëC++±àÒëÁ¬½Ó·½Ê½ÉîÈëÀí½âextern "C"
<1>.CºÍC++¶Ôº¯ÊýµÄ´¦Àí·½Ê½ÊDz»Í¬µÄ.±»extern "C"ÐÞÊεıäÁ¿ºÍº¯ÊýÊǰ´ÕÕCÓïÑÔ·½Ê½±àÒëºÍÁ¬½ÓµÄ.extern "C"ÓÃÓÚʵÏÖC++ÓëC¼°ÆäËüÓïÑԵĻìºÏ±à³Ì¡£
<2>.δ¼Óextern “C”ÉùÃ÷ʱµÄ±àÒ뷽ʽ
Ê×ÏÈ¿´¿´C++ÖжÔÀàËÆCµÄº¯ÊýÊÇÔõÑù±àÒëµÄ¡£
×÷ΪһÖÖÃæÏò ......

C/C++ÓïÑÔÖÐÖ¸ÕëµÄÒâÒå

¿´µ½Õâ¸öÃæÊÔÌâ,¹À¼ÆºÜ¶à¸ÕѧCÖ¸ÕëµÄͬѧ¶¼»á¸ã´í.
void GetMemory(char *p)
{
// ´«µÝ½øÀ´µÄµÄֵʹµÃ*p==NULL
// ÕâÀïÐ޸ĵÄÊÇÕâ¸öº¯ÊýÄÚµÄÁÙʱָÕë±äÁ¿pµÄÖµ
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
// ´«µÝ½øÈ¥µÄÊÇstrµÄÖµNULL
GetMemory(str);
// ÕâÀïstrÖ¸Õë² ......

ÈçºÎʹC£¬C++±àÒëÆ÷¶¼¿ÉÒÔµ÷ÓÃCдµÄDLL

    ÓÉÓÚC++±àÒëÆ÷ÐèÒªÖ§³Öº¯ÊýµÄÖØÔØ£¬»á¸Ä±äº¯ÊýµÄÃû³Æ£¬Óë±ê×¼CÖк¯ÊýÃû³Æ²»Í¬¡£È»¶ødllµÄµ¼³öº¯Êýͨ³£ÊDZê×¼C¶¨ÒåµÄ£¬Èñê×¼C±àдµÄdllº¯Êý¶¨ÒåÔÚCºÍC++±àÒëÆ÷϶¼ÄܱàÒëͨ¹ý£¬Í¨³£»áʹÓÃÒÔϵĸñʽ£º£¨Õâ¸ö¸ñʽÔںܶà³ÉÊìµÄ´úÂëÖкܳ£¼û£©
#ifdef __cplusplus extern "C" 

#endif
// ......

CÓïÑÔÎļþÏà¹Ø²Ù×÷

CÓïÑÔÎļþ²Ù×÷½Ó´¥ºÜ¾ÃÁË£¬Ò»Ö±Ã»ÓÐ×ܽáÏà¹ØÄÚÈÝ£¬½ñÌìÓõ½Á˾ÍÈ¥ÕÒÁËÕÒÏà¹ØÄÚÈÝ¡£
ÔÚANSI CÖУ¬¶ÔÎļþµÄ²Ù×÷·ÖΪÁ½ÖÖ·½Ê½£¬¼´Á÷ʽÎļþ²Ù×÷ºÍI/OÎļþ²Ù×÷
typedef struct {
int level; /* fill/empty level of buffer */
unsigned flags; /* File status flags */
char fd; /* File descriptor */
unsigned char hold ......

¡¶Cר¼Ò±à³Ì¡·2.3CÓïÑÔÖеķûºÅÖØÔØ

CÓïÑÔÖÐÐí¶à·ûºÅÊDZ»“ÖØÔØ”µÄ£¬ÓÐЩ¹Ø¼ü×ÖÒ²±»ÖØÔضø¾ßÓкü¸ÖÖÒâÒ壬ֵµÃ×¢ÒâµÄ¼¸¸ö·ûºÅÈçÏ£º
·ûºÅ      ÒâÒå
static   ÔÚº¯ÊýÄÚ²¿£¬±íʾ¸Ã±äÁ¿µÄÖµÔÚ¸÷¸öµ÷ÓüäÒ»Ö±±£³ÖÑÓÐøÐÔ
            ÔÚº¯ÊýÕâÒ»¼¶£¬±íʾ¸Ãº¯ÊýÖ»¶Ô±¾Îļþ¿É¼û
extern ÓÃÓÚ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ