̸̸CÓïÑÔµÄmalloc()ºÍfree()
Ò»¡¢malloc()ºÍfree()µÄ»ù±¾¸ÅÄîÒÔ¼°»ù±¾Ó÷¨£º
1¡¢º¯ÊýÔÐͼ°ËµÃ÷£º
void *malloc(long NumBytes)£º¸Ãº¯Êý·ÖÅäÁËNumBytes¸ö×Ö½Ú£¬²¢·µ»ØÁËÖ¸ÏòÕâ¿éÄÚ´æµÄÖ¸Õë¡£Èç¹û·ÖÅäʧ°Ü£¬Ôò·µ»ØÒ»¸ö¿ÕÖ¸Õ루NULL£©¡£
¹ØÓÚ·ÖÅäʧ°ÜµÄÔÒò£¬Ó¦¸ÃÓжàÖÖ£¬±ÈÈç˵¿Õ¼ä²»×ã¾ÍÊÇÒ»ÖÖ¡£
void free(void *FirstByte)£º ¸Ãº¯ÊýÊǽ«Ö®Ç°ÓÃmalloc·ÖÅäµÄ¿Õ¼ä»¹¸ø³ÌÐò»òÕßÊDzÙ×÷ϵͳ£¬Ò²¾ÍÊÇÊÍ·ÅÁËÕâ¿éÄڴ棬ÈÃËüÖØÐµõ½×ÔÓÉ¡£
2¡¢º¯ÊýµÄÓ÷¨£º
ÆäʵÕâÁ½¸öº¯ÊýÓÃÆðÀ´µ¹²»ÊǺÜÄÑ£¬Ò²¾ÍÊÇmalloc()Ö®ºó¾õµÃÓù»Á˾Í˦ÁËËü°ÑËü¸øfree()ÁË£¬¾Ù¸ö¼òµ¥Àý×Ó£º
³ÌÐò´úÂ룺
// Code...
char *Ptr = NULL;
Ptr = (char *)malloc(100 * sizeof(char));
if (NULL == Ptr)
{
exit (1);
}
gets(Ptr);
&n ......
ÉÏ´Î×ܽáÁËC++£¨ÃæÏò¶ÔÏó£©Éè¼ÆµÄºËÐÄ˼Ï룬²¢ÇÒÀý¾ÙÁËʹÓÃÀàÄ£ÐÍÀ´Ìæ´úifºÍswitchµÄÒ»ÖÖ½ÏΪµäÐ͵ÄÇé¿ö¡£ÏÂÃæÏëÀ´Ì¸Ì¸C++ÔÚ±àÂë·½ÃæµÄÌØµã¡£
ÔںܶྵäµÄC++½Ì³ÌÖж¼ÓÐÒ»¸ö½¨Ò飺Ӧ¾¡Á¿Ê¹Óû§´úÂ루¿âµÄʹÓÃÕߣ©¿´ÆðÀ´¶ÌС¶ø¼òµ¥¡£°´ÕÕ³£Ê¶£¬¼òµ¥µÄ´úÂëͨ³£Òª±È´ó¶ÎµÄ´úÂëºÃÀí½â£¬¶øÓû§´úÂëͨ³£ÊµÏÖµÄÊÇ×îÉϲãµÄ¹¦ÄÜ»òÕß½çÃæ£¬ËüµÄ²»È·¶¨ÐÔ¸ü´ó£¬¾Ñ鏿ËßÎÒÃÇ£¬×îÈÝÒ׳ö´íµÄ´úÂëÕýÊÇÄÇЩ±»Æµ·±Ð޸ĵĴúÂ룡Òò´Ë¼òµ¥µÄÓû§´úÂëÊÇÓкô¦µÄ£¬ÔÚ¿ª·¢Ò»¸ö¿âʱÎÒÃÇÓ¦¾¡Á¿×ñÊØÕâ¸ö½¨Òé¡£
C++ÓÐÁ½¸ö»úÖÆ¿ÉÒÔ°ïÖúÎÒÃÇʵÏÖÕâÒ»µã£¬Ò»¸öÊÇÔËËã·ûÖØÔØ£¬ÁíÒ»¸ö¾ÍÊÇÄ£°å¡£
C++µÄÔËËã·ûÖØÔØ»úÖÆ·Ç³£Ç¿´ó£¬ÕâÀï¾Í¾ÙÒ»¸ö¼òµ¥µÄÀý×Ó¡£CÓïÑÔÖÐÓÐÒ»ÖÖ¶ÔÊý×éµÄÌØÊâ³õʼ»¯·½Ê½£¬±ÈÈ磺int a[4] = {1,4,2,3}; ÕâÑùµÄÓï·¨·Ç³£ÇåÎúÇÒÈÝÒ×ÈÃÈËÀí½â£¬È»¶øºÜ¿ÉϧµÄÊÇ£¬ÕâÑùµÄÓï·¨²»ÄÜÓÃÓÚ¶ÔÊý×éµÄ¸³Öµ£¬¶ÔÊý×éµÄ¸³Öµ±ØÐëʹÓÃÒ»¸öÑ»·²Ù×÷£¬µ±Õâ¸öÊý×éÖеÄÄÚÈݲ»Êǰ´Ë³ÐòÅÅÁÐʱ£¬¶ÔÊý×éµÄ¸³ÖµºÜ¿ÉÄÜ»áÑݱä³ÉÒ»¸ö·Ç³£¸´ÔӵĹý³Ì¡£
µ«ÊÇÔÚC++ÖУ¬ÎÒÃÇÈ´¿ÉÒÔÀûÓÃÖØÔØÔËËã·ûÀ´ÊµÏÖÒ»ÖÖÏàËÆµÄ¸³ÖµÓï·¨£¬·½·¨¾ÍÊÇÎÒÃÇÉè¼ÆÒ»¸öµü´úÆ÷£¬²¢ÖØÔظõü´úÆ÷µÄ , ÔËËã·û£¬È»ºóÔÙÉè¼ÆÒ»¸ö¿ÉÒÔʹÓÃÕâ¸öµü´úÆ÷µÄÊý×éÀà ......
ÉÏ´Î×ܽáÁËC++£¨ÃæÏò¶ÔÏó£©Éè¼ÆµÄºËÐÄ˼Ï룬²¢ÇÒÀý¾ÙÁËʹÓÃÀàÄ£ÐÍÀ´Ìæ´úifºÍswitchµÄÒ»ÖÖ½ÏΪµäÐ͵ÄÇé¿ö¡£ÏÂÃæÏëÀ´Ì¸Ì¸C++ÔÚ±àÂë·½ÃæµÄÌØµã¡£
ÔںܶྵäµÄC++½Ì³ÌÖж¼ÓÐÒ»¸ö½¨Ò飺Ӧ¾¡Á¿Ê¹Óû§´úÂ루¿âµÄʹÓÃÕߣ©¿´ÆðÀ´¶ÌС¶ø¼òµ¥¡£°´ÕÕ³£Ê¶£¬¼òµ¥µÄ´úÂëͨ³£Òª±È´ó¶ÎµÄ´úÂëºÃÀí½â£¬¶øÓû§´úÂëͨ³£ÊµÏÖµÄÊÇ×îÉϲãµÄ¹¦ÄÜ»òÕß½çÃæ£¬ËüµÄ²»È·¶¨ÐÔ¸ü´ó£¬¾Ñ鏿ËßÎÒÃÇ£¬×îÈÝÒ׳ö´íµÄ´úÂëÕýÊÇÄÇЩ±»Æµ·±Ð޸ĵĴúÂ룡Òò´Ë¼òµ¥µÄÓû§´úÂëÊÇÓкô¦µÄ£¬ÔÚ¿ª·¢Ò»¸ö¿âʱÎÒÃÇÓ¦¾¡Á¿×ñÊØÕâ¸ö½¨Òé¡£
C++ÓÐÁ½¸ö»úÖÆ¿ÉÒÔ°ïÖúÎÒÃÇʵÏÖÕâÒ»µã£¬Ò»¸öÊÇÔËËã·ûÖØÔØ£¬ÁíÒ»¸ö¾ÍÊÇÄ£°å¡£
C++µÄÔËËã·ûÖØÔØ»úÖÆ·Ç³£Ç¿´ó£¬ÕâÀï¾Í¾ÙÒ»¸ö¼òµ¥µÄÀý×Ó¡£CÓïÑÔÖÐÓÐÒ»ÖÖ¶ÔÊý×éµÄÌØÊâ³õʼ»¯·½Ê½£¬±ÈÈ磺int a[4] = {1,4,2,3}; ÕâÑùµÄÓï·¨·Ç³£ÇåÎúÇÒÈÝÒ×ÈÃÈËÀí½â£¬È»¶øºÜ¿ÉϧµÄÊÇ£¬ÕâÑùµÄÓï·¨²»ÄÜÓÃÓÚ¶ÔÊý×éµÄ¸³Öµ£¬¶ÔÊý×éµÄ¸³Öµ±ØÐëʹÓÃÒ»¸öÑ»·²Ù×÷£¬µ±Õâ¸öÊý×éÖеÄÄÚÈݲ»Êǰ´Ë³ÐòÅÅÁÐʱ£¬¶ÔÊý×éµÄ¸³ÖµºÜ¿ÉÄÜ»áÑݱä³ÉÒ»¸ö·Ç³£¸´ÔӵĹý³Ì¡£
µ«ÊÇÔÚC++ÖУ¬ÎÒÃÇÈ´¿ÉÒÔÀûÓÃÖØÔØÔËËã·ûÀ´ÊµÏÖÒ»ÖÖÏàËÆµÄ¸³ÖµÓï·¨£¬·½·¨¾ÍÊÇÎÒÃÇÉè¼ÆÒ»¸öµü´úÆ÷£¬²¢ÖØÔظõü´úÆ÷µÄ , ÔËËã·û£¬È»ºóÔÙÉè¼ÆÒ»¸ö¿ÉÒÔʹÓÃÕâ¸öµü´úÆ÷µÄÊý×éÀà ......
char *strcpy(char *strDes, const char *strSrc)
{
assert((strDes != NULL) && (strSrc != NULL));
char *address = strDes;
while ((*strDes ++ = *strSrc ++) != '\0')
NULL;
return address;
}
char *strchr_(char *str, int c)
{
assert(str != NULL);
while ((*str != (char) c) && (*str != '\0'))
str ++;
if (*str != '\0')
return str;
return NULL;
}
char *strchr(const char *str, int c)
{
  ......
²Î¿¼¡¶linuxÄÚºËÍêȫעÊÍ¡·ºÍÍøÉÏÏà¹ØÎÄÕÂ
/*
* ¿ØÖÆÌ¨ÏÔʾ²Ù×÷
*/
/*
* linux/kernel/console.c
*
* (C) 1991 Linus Torvalds
*/
/*
* console.c
*
* This module implements the console io functions
* 'void con_init(void)'
* 'void con_write(struct tty_queue * queue)'
* Hopefully this will be a rather complete VT102 implementation.
*
* Beeping thanks to John T Kohl.
*/
/**********************
* con_init con_write *
**********************/
/*
* NOTE!!! We sometimes disable and enable interrupts for a short while
* (to put a word in video IO), but this will work even for keyboard
* interrupts. We know interrupts aren't enabled when getting a keyboard
* interrupt, as we use trap-gates. Hopefully all is well.
*/
/*
* Code to check for different video-cards mostly by Galen Hunt,
* <g-hunt@ee.utah.edu&g ......
²Î¿¼¡¶linuxÄÚºËÍêȫעÊÍ¡·ºÍÍøÉÏÏà¹ØÎÄÕÂ
/*
* ¿ØÖÆÌ¨ÏÔʾ²Ù×÷
*/
/*
* linux/kernel/console.c
*
* (C) 1991 Linus Torvalds
*/
/*
* console.c
*
* This module implements the console io functions
* 'void con_init(void)'
* 'void con_write(struct tty_queue * queue)'
* Hopefully this will be a rather complete VT102 implementation.
*
* Beeping thanks to John T Kohl.
*/
/**********************
* con_init con_write *
**********************/
/*
* NOTE!!! We sometimes disable and enable interrupts for a short while
* (to put a word in video IO), but this will work even for keyboard
* interrupts. We know interrupts aren't enabled when getting a keyboard
* interrupt, as we use trap-gates. Hopefully all is well.
*/
/*
* Code to check for different video-cards mostly by Galen Hunt,
* <g-hunt@ee.utah.edu&g ......
C/C++¹Ø¼ü×Östatic,const,inline,define,typedef
document.body.oncopy = function() {
if (window.clipboardData) {
setTimeout(function() {
var text = clipboardData.getData("text");
if (text && text.length > 300) {
text = text + "\r\n\n±¾ÎÄÀ´×ÔCSDN²©¿Í£¬×ªÔØÇë±êÃ÷³ö´¦£º" + location.href;
clipboardData.setData("text", text);
}
}, 100);
}
}
Ò»
static
1)
²úÉú±³¾°
Òý³öÔÒò£ºº¯ÊýÄÚ²¿¶¨ÒåµÄ±äÁ¿£¬ÔÚ³ÌÐòÖ´Ðе½ËüµÄ¶¨Ò崦ʱ£¬±àÒëÆ÷ΪËüÔÚÕ»ÉÏ·ÖÅä¿Õ¼ä£¬´ó¼ÒÖªµÀ£¬º¯ÊýÔÚÕ»ÉÏ·ÖÅäµÄ¿Õ¼äÔڴ˺¯ÊýÖ´ÐнáÊøÊ±»áÊͷŵô£¬ÕâÑù¾Í²úÉúÁËÒ» ......
C/C++¹Ø¼ü×Östatic,const,inline,define,typedef
document.body.oncopy = function() {
if (window.clipboardData) {
setTimeout(function() {
var text = clipboardData.getData("text");
if (text && text.length > 300) {
text = text + "\r\n\n±¾ÎÄÀ´×ÔCSDN²©¿Í£¬×ªÔØÇë±êÃ÷³ö´¦£º" + location.href;
clipboardData.setData("text", text);
}
}, 100);
}
}
Ò»
static
1)
²úÉú±³¾°
Òý³öÔÒò£ºº¯ÊýÄÚ²¿¶¨ÒåµÄ±äÁ¿£¬ÔÚ³ÌÐòÖ´Ðе½ËüµÄ¶¨Ò崦ʱ£¬±àÒëÆ÷ΪËüÔÚÕ»ÉÏ·ÖÅä¿Õ¼ä£¬´ó¼ÒÖªµÀ£¬º¯ÊýÔÚÕ»ÉÏ·ÖÅäµÄ¿Õ¼äÔڴ˺¯ÊýÖ´ÐнáÊøÊ±»áÊͷŵô£¬ÕâÑù¾Í²úÉúÁËÒ» ......
c/C++Îļþ²Ù×÷
Èí¼þ¿ª·¢ 2009-03-12 16:22 ÔĶÁ18 ÆÀÂÛ0
×ֺţº ´ó´ó ÖÐÖРСС
»ùÓÚCµÄÎļþ²Ù×÷
¡¡¡¡ÔÚANSI CÖУ¬¶ÔÎļþµÄ²Ù×÷·ÖΪÁ½ÖÖ·½Ê½£¬¼´Á÷ʽÎļþ²Ù×÷ºÍI/OÎļþ²Ù×÷£¬ÏÂÃæ¾Í·Ö±ð½éÉÜÖ®¡£
Ò»¡¢Á÷ʽÎļþ²Ù×÷
¡¡¡¡ÕâÖÖ·½Ê½µÄÎļþ²Ù×÷ÓÐÒ»¸öÖØÒªµÄ½á¹¹FILE£¬FILEÔÚstdio.hÖж¨ÒåÈçÏ£º
typedef struct {
int level; /* fill/empty level of buffer */
unsigned flags; /* File status flags */
char fd; /* File descriptor */
unsigned char hold; /* Ungetc char if no buffer */
int bsize; /* Buffer size */
unsigned char _FAR *buffer; /* Data transfer buffer */
unsigned char _FAR *curp; /* Current active pointer */
unsigned istemp; /* Temporary file indicator */
short token; /* Used for validity checking */
} FILE; /* This is the FILE object */
¡¡¡¡FILEÕâ¸ö½á¹¹°üº¬ÁËÎļþ²Ù×÷µÄ»ù±¾ÊôÐÔ£¬¶ÔÎļþµÄ²Ù×÷¶¼ÒªÍ¨¹ýÕâ¸ö½á¹¹µÄÖ¸ÕëÀ´½øÐУ¬´ËÖÖÎļþ²Ù×÷³£Óõĺ¯Êý¼ûÏÂ±í º¯Êý ¹¦ÄÜ
fopen() ´ò¿ªÁ÷
fclose() ¹Ø±ÕÁ÷
fputc() дһ¸ö×Ö· ......
c/C++Îļþ²Ù×÷
Èí¼þ¿ª·¢ 2009-03-12 16:22 ÔĶÁ18 ÆÀÂÛ0
×ֺţº ´ó´ó ÖÐÖРСС
»ùÓÚCµÄÎļþ²Ù×÷
¡¡¡¡ÔÚANSI CÖУ¬¶ÔÎļþµÄ²Ù×÷·ÖΪÁ½ÖÖ·½Ê½£¬¼´Á÷ʽÎļþ²Ù×÷ºÍI/OÎļþ²Ù×÷£¬ÏÂÃæ¾Í·Ö±ð½éÉÜÖ®¡£
Ò»¡¢Á÷ʽÎļþ²Ù×÷
¡¡¡¡ÕâÖÖ·½Ê½µÄÎļþ²Ù×÷ÓÐÒ»¸öÖØÒªµÄ½á¹¹FILE£¬FILEÔÚstdio.hÖж¨ÒåÈçÏ£º
typedef struct {
int level; /* fill/empty level of buffer */
unsigned flags; /* File status flags */
char fd; /* File descriptor */
unsigned char hold; /* Ungetc char if no buffer */
int bsize; /* Buffer size */
unsigned char _FAR *buffer; /* Data transfer buffer */
unsigned char _FAR *curp; /* Current active pointer */
unsigned istemp; /* Temporary file indicator */
short token; /* Used for validity checking */
} FILE; /* This is the FILE object */
¡¡¡¡FILEÕâ¸ö½á¹¹°üº¬ÁËÎļþ²Ù×÷µÄ»ù±¾ÊôÐÔ£¬¶ÔÎļþµÄ²Ù×÷¶¼ÒªÍ¨¹ýÕâ¸ö½á¹¹µÄÖ¸ÕëÀ´½øÐУ¬´ËÖÖÎļþ²Ù×÷³£Óõĺ¯Êý¼ûÏÂ±í º¯Êý ¹¦ÄÜ
fopen() ´ò¿ªÁ÷
fclose() ¹Ø±ÕÁ÷
fputc() дһ¸ö×Ö· ......