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

C++ 内存模型

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

C++ 内存模型

偷偷拿来记录一下萌新的cs路——day17 C++内存四区域


代码区:存放函数二进制代码,由操作系统管理。

全局区:存放全局变量(在所有函数外部定义的变量,值在程序的整个生命周期内都是有效,可被任何函数访问)、静态变量、常量。

栈区:存放函数参数值、局部变量等,由编译器管理。

堆区:由程序员管理,程序运行结束后由操作系统回收。

#include
using namespace std;

int g_a = 10;
int g_b = 10;

int *func(int d) {
	int c = 100;
	d = 1000;  //栈区变量数据在函数执行完被自动释放
	int* a = new int(10);  //指针:局部变量,放栈区;指针保存数据放堆区
	return a;
}

void test01() {
	int* p = func(1000);
	cout << *p << endl;
	cout << *p << endl;
	delete p;
	//cout << *p << endl;  //因指针内存已被释放,此句会报错

}

void test02() {  //堆区用new开辟数组
	int *arr = new int[10];
	for (int i = 0; i < 10; i++) {
		arr[i] = i + 100;  //给arr赋值
	}
	for (int i = 0; i < 10; i++) {
		cout << arr[i] << " ";
	}
	delete[]arr;  //释放堆区数组(注意加中括号)
}

int main() {
	int a = 10;
	int b = 10;
	cout << "局部变量a的地址 " << (int)&a << endl;
	cout << "局部变量b的地址 " << (int)&b << endl;
	cout << "全局变量a的地址 " << (int)&g_a << endl;
	cout << "全局变量b的地址 " << (int)&g_b << endl;


	test01();
	test02();

	return 0;
}

运行结果​​​​​​​ 

 以后学了更多知识还会回来更新的!有误之处恳请大佬们指正,提前感谢!

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

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

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