局部变量在stack中的内存分配
为了验证局部变量在stack中的分配,在vs2005中写了个小程序,却发现输出有些意外。虽然地址是递减的,但是每个的差值却是12????sizeof(int)值为4,那么上述差值也应该是4啊。 若把数据类型int改成char,仍然是12.
//win7(32Bit)+vs2005
int main( )
{
int i,j,k,l;
i=j=k=l=1;
cout<<&i<<" "<<&j<<" "<<&k<<" "<<&l;
return 1;
}
************************************
output:
0012ff28 0012ff1c 0012ff10 0012ff04
我是在c++ programming today这本书上看到的局部变量在stack中的分配,书上讲的差值是4。!
[解决办法]
看看汇编是怎么样的
[解决办法]
(gdb) list main
1 #include <iostream>
2
3 int main()
4 {
5 int i,j,k,l;
6 i=j=k=l=1;
7 std::cout<<&i<<" "<<&j<<" "<<&k<<" "<<&l;
8 return 1;
9 }
10
(gdb) p &i
$4 = (int *) 0xbf8b5b90
(gdb) p &j
$5 = (int *) 0xbf8b5b8c
(gdb) p &k
$6 = (int *) 0xbf8b5b88
(gdb) p&l
$7 = (int *) 0xbf8b5b84
(gdb)