C++内存分布探讨,x86和x64位的细微区别

博客探讨了C++程序中栈和堆内存分配在x86和x64架构下地址顺序的不同,32位环境下栈地址递减,堆地址递增,而64位环境下则呈现相反的顺序。通过代码示例展示了变量在内存中的分布,并提供了测试结果。

网上在探讨C++内存分布的时候,大都是下面这种图,
外加上这么一句话:“栈区申请空间的地址(表示地址的八个十六进制数)是从大到小的,堆区申请空间地址是从小到大的。”
但是,小编编译器用x86和x64运行出结果恰好是相反的!

参考文章1:常规内存分布

《C/C++程序内存的分布》
在这里插入图片描述
在这里插入图片描述

参考文章2:栈堆地址高低次序测试1

《栈堆地址高低次序问题》

int main()
{
   
   
	printf("*************** 栈 ***************\n");
	int a;
	int b;
	printf("a=%x,b=%x\n", &a, &b);

	int d[10];
	for (int i = 0; i < 10; i++)
	{
   
   
		printf("d[%d]=%x\n", i, &d[i]);
	}

	printf("*************** 堆 ***************\n");
	int* c = new int;
	printf("c=%x\n", c);

	int* e = new int[10];
	for (int i = 0; i < 10; i++)
	{
   
   
		printf("e[%d]=%x\n"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰之行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值