首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

储存分配方式

2012-09-18 
存储分配方式储存分配方式操作系统会为了一个准备好运行的程序分配内存空间,包括四个部分:代码区、全局变量

存储分配方式
   储存分配方式

操作系统会为了一个准备好运行的程序分配内存空间,包括四个部分:代码区、全局变量和静态变量区、栈区、堆区。

1、代码区:用来存放程序的指令。

2、全局变量和静态变量:用于存放全局变量、常量以及static存储的局部变量的内存分配。

3、栈区:用于存放局部变量、函数的形参、函数返回地址等内存分配。

4、堆区:用于存放变量的动态内存的分配。

对程序实体的内存分配可以采用三种存储分配方式:静态分配、自动分配、动态分配

静态分配:程序运行前,由编译器编译的时候进行的内存分配,且到整个程序运行完才释放内存空间(对应全局变量和静态变量区)

自动分配:在程序执行的时候才对其进行分配内存,执行完代码段或函数后就释放空间(对应栈区)

动态分配:有需要才进行内存分配,运行完手动释放内存空间(堆区)

 

1.free()函数

函数原型:void free(void *ptr)

功能说明:释放由ptr指示的存储块

参数说明:ptr为指向被释放存储块的指针

2.malloc()函数

函数原型:void malloc(site_t  size)

功能说明:从堆空间中分配大小为size个字节的内存空间给本函数的调用者。

参数说明:size指出要求分配的内存空间大小(单位:字节)

返回值:如果分配成功,返回存储块的首地址;否则返回空指针(NULL)。

3.calloc()函数

函数原型:void calloc(size_ t  nmemb,size_t size)

功能说明:从堆空间中分配num*size字节的内存空间给本函数的调用者。

参数说明:size为所要分配内存单元的对象大小(所占的字节),nmemb为所要分配内存单元的对象数。

返回值:如果分配成功,返回存储块的首地址;否则返回空指针(NULL)。

4.realloc()函数

函数原型:void *realloc(void *ptr ,size_t size)

功能说明:该函数用于为某(些)对象重新分配存储单元,它将指定对象原来所占据的由ptr指针所指向的存储单元的大小改为size参数所指定的大小。

参数说明:ptr指向为某对象原来分配的内存块的首地址,size指出该对象所占据的存储快的新的大小(字节数)。

返回值:如果分配成功,返回存新储块的首地址;否则返回空指针(NULL)。

热点排行