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

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


最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



