进程环境———内存管理

数据的内部存储:大端法(0x12345678低位存储在高位地址)小端法(0x12345678低                                 位存储在低位地址)


C语言的存储布局——代码段

是进程中最重要的一个段,是由CPU执行的指令部分。

C语言的存储布局——数据段and缓冲段

       初始化数据段(.data)——包含程序中明确给定初值的全局变量和静态变量

       非初始化数据段(.bss)——未给定初值的全局变量and静态变量。

       程序运行时由内核干涉将段中未初始化的初始化为0(NULL)

C语言的存储布局——栈

      所有的自动变量以及函数调用需要保存的信息(返回地址,函数调用前各寄存器的

      值)都存储在栈上。(经典错误:将一个指向局部变量的指针作为函数的返回值)

C语言的存储布局——堆                                                                                                         堆用于存储用户申请的内存空间,进行动态内存分配



补充:
#include <stdio.h>
#include <unistd.h>
int a1=1;//auto为临时变量,不能放在全局区
static int a2=2;
const int a3=3;
int main()
{
    int b1 = 4;
   static b2 = 5;
  const b3 = 6;

  int* p = malloc(4);
  
  printf("a1:%p\n",&a1);
  printf("a2:%p\n",&a2);
  printf("a3:%p\n",&a3);
  printf("b1:%p\n",&b1);
  printf("b2:%p\n",&b2);
  printf("p:%p\n",p1);
 printf("main:%p",main);

}



查看进程内存管理:
            
    通过查看maps可得到结论:
     任何程序的内存空间分成4个基本部分
                    1.代码区    (全局常量,如const int a=5;并且a也为全局变量,函数名)
                    2.全局栈区(静态全局变量,普通全局变量,静态局部变量)
                    3.堆 (内存分配)
                    4.局部栈(局部常量,局部变量)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值