c++内存分配 a ,b,c,和obj是如何分配空间的

a ,b,c,和obj是如何分配空间的 obj是一个class A的对象

图片说明
图片说明

都放在堆栈上,堆栈从高地址向低地址扩展,所以先定义的地址大于后定义的。
整数使用4个字节
A用了几个字节需要看A的定义

并不是想你评论中说的那样,程序是从上往下一行一行走的(你暂时先这么理解),执行到obj,等其他变量时程序会给他分配内存
你程序中的变量都是在栈中分配的。栈中分配的内存系统会自己释放他

栈是由高地址向低地址增长的。
1) 所以 a > obj; a > b > c
2) 自动变量作用域是最内层的{} 所以 执行到输出b/c 时, obj生命期已过; 看起来b/c 与 obj 可能地址有重叠部分
3) 具体的obj 与 b/c 之间的位置关系, 还需要看A的sizeof 多大、 设置的对齐方式

进入函数时, 栈都会计算所需空间自动提前扩充好。