- 论坛徽章:
- 0
|
lz的问题,我看了一下,按照栈的增长方向,直觉是
a = 6, b = 5, c = 3, d = 4
然后为了证实,写了代码,在mingw(gcc v4.6.1)中测试了一下啊,结果大囧- int main()
- {
- int a = 1;
- int b = 2;
- int c = 3;
- int *p = &b;
- int d = 4;
- *p = 5;
- *(p + 1) = 6;
- printf("a = %d, b = %d, c = %d, d = %d\n", a, b, c, d);
- return 0;
- }
复制代码 输出
a = 1, b = 5, c = 3, d = 6
然后加了句话,打印出各变量的地址- int main()
- {
- int a = 1;
- int b = 2;
- int c = 3;
- int *p = &b;
- int d = 4;
- *p = 5;
- *(p + 1) = 6;
- printf("a = %d, b = %d, c = %d, d = %d\n", a, b, c, d);
- printf("address &a = %d, &b = %d, &c = %d, &d = %d, &p = %d, &(p + 1) = %d\n",(unsigned)&a, (unsigned)&b, (unsigned)&c, (unsigned)&d, (unsigned)p, (unsigned)(p + 1));
- return 0;
- }
复制代码 输出
a = 6, b = 5, c = 3, d = 4
address &a = 2293512, &b = 2293508, &c = 2293504, &d = 2293500, &p = 2293508, &(p + 1) = 2293512
{:3_185:}输出的结果变了……
然后果断换到vs2008 sp1下
输出
a = 1, b = 5, c = 3, d = 4
并友情赠送一个Debug Error
Run-Time Check Failure #2 - Stack around the variable 'b' was corrupted.
求大牛指教 |
|