資源描述:
《C語(yǔ)言管理內(nèi)存》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、C語(yǔ)言管理內(nèi)存對(duì)于一個(gè)c/c卄程序員來(lái)說(shuō),內(nèi)存泄漏是一個(gè)常見的也是令人頭疼的問題,為了應(yīng)對(duì)這個(gè)問題,有許多技術(shù)被研究出來(lái)來(lái)解決這個(gè)問題,例如SmartPointer,Garbagecollection等。一般我們常說(shuō)的內(nèi)存泄漏是指堆內(nèi)存的泄漏。那么為什么會(huì)導(dǎo)致內(nèi)存泄漏呢?通過學(xué)習(xí)內(nèi)存管理,相信你一定能解決好這個(gè)問題。在進(jìn)入本專題前,我們先看一下下面的程序,來(lái)簡(jiǎn)單分析以下C語(yǔ)言的內(nèi)存管理:#include<stdio.h>#include<malloc.h>//全局變量定義intiGloballntl
2、=0;intiGloballnt2=0;intiGloballnt3=0;〃全局常量定義constintiGlobalConstlntl=l;constintiGlobalConstlnt2=5;constintiGlobalConstlnt3=6;〃全局靜態(tài)變量定義staticintiGlobalStaticlntl=0;staticintiGlobalStaticlnt2=0;staticintiGlobalStaticlnt3=0;〃函數(shù)定義voidfuncParamTest(intiFuncParamljntiFu
3、ncParam2,intiFuncParam3){//函數(shù)私有變量定義intiLocallntl二iFuncParaml;intiLocallnt2二iFuncParam2;intiLocallnt3二iFuneParam3;printf「函數(shù)參數(shù)變量?jī)?nèi)存地址,');pnntf("iFuncParaml=0x%08x"/&iFuncParaml);printf(,,iFuncParam2=0x%08x",&iFuncParam2);1printf("iFuncParam3=0x%08x"
4、/&iFuncParam3);printf(H函數(shù)本地變量的內(nèi)存地址,');printf(',iLocallntl=0x%08x",&iLocallntl);printf("iLocallnt2=0x%08x”,&iLocallnt2);return;printf("iLocallnt3=0x%08x"/&iLocallnt3);}〃入口函數(shù)intmain(intargc,char*argv[]){//局部靜態(tài)變量staticintiStaticlntl=0;static
5、intiStaticlnt2=0;staticintiStaticlnt3=0;〃局部靜態(tài)常量定義conststaticintiConstStaticIntl=0;conststaticintiConstStaticlnt2=0;conststaticintiConstStaticlnt3=0;〃局部常量constintiConstlntl=l;constintiConstlnt2=5;constintiConstlnt3=6;〃局部變量intiLocallntl=0;intiLocallnt2=0;intiLocalln
6、t3=0;char*pMallocl,*pMalloc2,*pMalloc3;char*pNewl,*pNew2/*pNew3;printfC全局常量的內(nèi)存地址");printf("iGlobalConstlntl=0x%08x"/&iGlobalConstlntl);printf("iGlobalConstlnt2=0x%08x",&iGlobalConstlnt2);printf(,,iGlobalConstlnt3=0x%08x",&iGlobalConstlnt3);pr
7、intf(,,iConstStaticlntl=0x%08x"/&iConstStaticlntl);printf("iConstStaticlnt2=0x%08x"/&iConstStaticlnt2);printf(,,iConstStaticlnt3=0x%08x,,,&iConstStaticlnt3);2printf「全局變量的內(nèi)存地址n);printf(,,iGloballntl=0x%08x"/&iGloballntl);printf(,,iGlobal
8、lnt2=0x%08x"/&iGloballnt2);printf(,,iGloballnt3=0x%08x"/&iGloballnt3)■/printf(H靜態(tài)變量的內(nèi)存地址,,);printf("iGlobalStaticlntl=0x%08x"/&iGl