深入理解局部变量在堆栈中的结构

    一直对一些东西都是模模糊糊的,有时候自我感觉已经很清楚了,但是过一段时间要用到这些知识的时候又感觉比较混乱,于是最好的办法就是通过实践来解决这些问题,这样比较直观。
    通过一下的分析可以对数组在内存的分布、堆栈内的顺序等一些问题得到解答,基本上就两张图,看不懂的话留言交流,个人技术也很菜,如有错误望纠正。
1、摘自谭浩强里面的一段代码,修改了下:
#include "stdafx.h"
#include "stdio.h"
int main(int argc, char* argv[])
{
    int i,a[10];
    for (i=0;i<=9;i++)
    {
        a[i]=i;
    }
    for (i=9;i>=0;i--)
    {
        printf("%d",a[i]);
    }
    printf("\n");
    return 0;
}

调试截图:

2、修改后的一段代码再次调试:
    int a[10];
    char c;
    int i;
    for (i=0;i<=9;i++)
    {
        a[i]=i;
    }
    c ='s';

就只修改了这部分,然后调试截图

3、总结如下
1)、数组的标号保存的是数组的首地址;
2)、int 分配4字节,char 分配1字节;
3)、堆栈从高地址到低地址增长,同时定义两个变量,参数从右向左入栈(stdcall);

文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 局部变量堆栈结构调试
相关日志:
评论: 0 | 引用: 0 | 查看次数: 207
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 100 字 | UBB代码 开启 | [img]标签 关闭