资源描述:
《C语言管理内存》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C语言管理内存对于一个c/c卄程序员来说,内存泄漏是一个常见的也是令人头疼的问题,为了应对这个问题,有许多技术被研究出來來解决这个问题,例如SmartPointer,Garbagecollection等。一般我们常说的内存泄漏是指堆内存的泄漏。那么为什么会导致内存泄漏呢?通过学习内存管理,相信你一定能解决好这个问题。在进入本专题前,我们先看一下下面的程序,来简单分析以下C语言的内存管理:#include<stdio.h>#include<malloc.h>//全局变量定义intiGloballntl
2、=0;intiGloballnt2=0;intiGloballnt3=0;〃全局常量定义constintiGlobalConstlntl=l;constintiGlobalConstlnt2=5;constintiGlobalConstlnt3=6;〃全局静态变量定义staticintiGlobalStaticlntl=0;staticintiGlobalStaticlnt2=0;staticintiGlobalStaticlnt3=0;〃函数定义voidfuncParamTest(intiFuncParamljntiFu
3、ncParam2,intiFuncParam3){//函数私有变量定义intiLocallntl二iFuncParaml;intiLocallnt2二iFuncParam2;intiLocallnt3二iFuneParam3;printf「函数参数变量内存地址,');pnntf("iFuncParaml=0x%08x"/&iFuncParaml);printf(,,iFuncParam2=0x%08x",&iFuncParam2);1printf("iFuncParam3=0x%08x"
4、/&iFuncParam3);printf(H函数本地变量的内存地址,');printf(',iLocallntl=0x%08x",&iLocallntl);printf("iLocallnt2=0x%08x”,&iLocallnt2);return;printf("iLocallnt3=0x%08x"/&iLocallnt3);}〃入口函数intmain(intargc,char*argv[]){//局部静态变量staticintiStaticlntl=0;static
5、intiStaticlnt2=0;staticintiStaticlnt3=0;〃局部静态常量定义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全局常量的内存地址");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);printf(,,iGloballntl=0x%08x"/&iGloballntl);printf(,,iGlobal
8、lnt2=0x%08x"/&iGloballnt2);printf(,,iGloballnt3=0x%08x"/&iGloballnt3)■/printf(H静态变量的内存地址,,);printf("iGlobalStaticlntl=0x%08x"/&iGl