储存分配方式
操作系统会为了一个准备好运行的程序分配内存空间,包括四个部分:代码区、全局变量和静态变量区、栈区、堆区。
1、代码区:用来存放程序的指令。
2、全局变量和静态变量:用于存放全局变量、常量以及static存储的局部变量的内存分配。
3、栈区:用于存放局部变量、函数的形参、函数返回地址等内存分配。
4、堆区:用于存放变量的动态内存的分配。
对程序实体的内存分配可以采用三种存储分配方式:静态分配、自动分配、动态分配
静态分配:程序运行前,由编译器编译的时候进行的内存分配,且到整个程序运行完才释放内存空间(对应全局变量和静态变量区)
自动分配:在程序执行的时候才对其进行分配内存,执行完代码段或函数后就释放空间(对应栈区)
动态分配:有需要才进行内存分配,运行完手动释放内存空间(堆区)
1.free()函数
函数原型:void free(void *ptr)
功能说明:释放由ptr指示的存储块
参数说明:ptr为指向被释放存储块的指针
2.malloc()函数
函数原型:void malloc(site_t size)
功能说明:从堆空间中分配大小为size个字节的内存空间给本函数的调用者。
参数说明:size指出要求分配的内存空间大小(单位:字节)
返回值:如