栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++内存分区管理

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++内存分区管理

一、内存分区模型

代码区:存放代码,编译后的二进制文件也存放在这里。不允许修改,可以执行。

常量存储区:存放常量,也不允许修改,程序运行结束后会自动释放。

全局区:又叫静态存储区。存放全局变量、静态变量。

堆区:动态申请的内存空间。由程序员分配和释放,若程序员没有释放,程序结束后由操作系统回收。

栈区 :栈由编译器自动分配和释放,存放函数的参数值、局部变量等。

内存分区的意义:不同区域存放不同数据,赋予不同的生命周期。

二、代码实例

请结合代码注释理解

int main(int argc, char *argv[])
{
	static int stVar = 3;		//静态变量,在全局区

	string sVar = "hello C++"; //sVar:局部变量,在栈区; "hello C++":字符串常量,在常量存储区
	
	//pVar为指针变量,在栈区
	//pVar指向一个字符数组的首地址,这个字符数组是使用malloc(new也可以)在堆区开辟的连续的内存空间
	char *pVar = (char*)malloc(10);
	
	//我们可以使用把它们打印出来理解
	cout << "指针变量所在内存地址:" << (void*)&pVar << endl; //打印指针变量所在内存地址
	//打印pVar指向的字符数组各个元素的地址
	cout << "字符数组各元素所在内存地址:" << endl;
	for (int i=0; i < 10; ++i)
	{
		cout << (void*)&pVar[i] << " ";
	}
	free(pVar);

	system("pause");
	return 0;
}

输出:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008478.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号