程序内存分配概述

五类内存

1.栈区( s t a c k stack

主要存放函数参数值、函数局部变量等。典型操作是子程序调用时,子程序不断占用栈内存,而子程序也正是利用了栈先入后出的特性实现了子程序调用的功能。

栈空间从高地址向低地址延伸,是一块连续的内存空间,且是一块非共享区域。

2.堆区( h e a p heap

由程序员进行申请与释放,如 n e w new d e l e t e delete m a l l o c malloc 等方法,若程序员未释放,则由 O S OS 进行回收。堆是从低地址向高地址扩展的内存区域,是一块不连续的内存区域,但是一块共享区域。

3.全局区(静态区 / s t a t i c static

存储全局变量和静态变量的区域,程序结束后由 O S OS 释放。

4.文字常量区

常量字符串存放区域,程序结束后由 O S OS 释放。

5.程序代码区

存放函数体的二进制代码。


代码举例

int total = 0; //全局变量,全局区

int main(){
	int a; //栈
	char b[] = "abc"; //栈
	char *c = "123456"; //c在栈上,"123456"在常量区
	static int d = 0; //全局区
	b = (char*)malloc(10); //分配的10字节内容在堆区,但b指针仍在栈区 
	return 0;
}
发布了244 篇原创文章 · 获赞 115 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_41552508/article/details/102465880
今日推荐