美文网首页
内存分析

内存分析

作者: 0843d07b95d5 | 来源:发表于2018-01-26 23:02 被阅读0次

    本文为学习笔记 能力有限 如有错误望指正。谢谢!!!

    程序在运行过程中内存通常分为代码段,全局(静态)存储区(分为BSS段和DATA段),堆,栈。

    代码段:存放程序的二进制代码。

    全局(静态)存储区:包括BSS(Block Started by Symbol)段,DATA段。BSS段通常指用来存放程序中未初始化的全局变量的内存区域;DATA 段通常指用来存放程序中初始化的全局变量的内存区域。程序结束时由系统释放。

    堆:由程序猿自己手动分配和释放。如由malloc(c语言) new(c++或者java)来分配,由free(c 语言)delete(c++)来释放。如果程序员不释放程序结束时由系统释放。

    栈:由编译器自动分配和释放。存放函数的参数值和局部变量等,操作类似数据结构中的栈。

    举例:

           int k=1;//全局变量位于全局(静态)存储区中

           void main(){

                int i=1;//局部变量位于栈中

                char *j;

                static int m=1;//  静态变量位于全局(静态)存储区

                printf("栈区地址为:0X%x\n", &i);

                j=(char*)malloc(2);//malloc分配的区域位于堆中,j指向堆中分配的存储单元

                free(j);//及时释放

                printf("堆区地址为:0X%x\n", j);

                printf("全局变量地址为:0X%x\n", &k);

                printf("静态变量地址为:0X%x\n", &m);

                printf("程序区地址为:0X%x\n", &main);

          }

    相关文章

      网友评论

          本文标题:内存分析

          本文链接:https://www.haomeiwen.com/subject/yrcwaxtx.html