内存四区图

本文详细介绍了C程序中不同内存区域的功能与使用场景,包括代码区、数据区、堆区和栈区,并通过实例展示了这些区域如何在程序运行时发挥作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

text:代码区,可执行二进制文件

Data:数据区,存放全局已初始化数据,静态变量字符串常量

Bss:存放的是全局未初始化变量,静态未初始化变量

堆区 heap 用于动态内存的分配,比栈区大很多

栈区:stack 加载函数的参数,返回值局部变量等,用的时候开辟,不用的时候就不开辟

Bss 和Data是生命周期是整个程序执行时间,属于数据区,合在一起称为全局静态区

栈区的结构:如同水杯,一段开,一段闭,可以压栈和出栈,栈是先进后出,

如:

def a():

    a= 1

    print(a)

    b()

    return a 

def b():

        b= 2

        print(b)

        c()

        return b

def c():

        c= 3

        print(c)

        return c

a()    调用a()函数,注意函数执行顺序

函数执行时,出现断点,压栈

在代码中怎么看内存四区图:

  vim bb.c

# include<stdio.h>

int main()  {

    printf(‘hello world!’\n);

    return 0;

}                  c程序中的主函数,程序入口,{}里面是函数体

   再编译: gcc bb.c -o b        # -o 指定编译后的文件名

    b就是可以执行的二进制文件

    执行 ./b    

    cat bb.c 查看写的程序文件

  改完程序文件,需要重新编译 gcc bb.c -o dd

file b    查看二进制文件基本信息

size b

text 1185 代码区

data 552 静态区、全局已初始化数据区

bss 8 未初始化数据

dec 1745 十进制总和

hex 6d1 十六进制总和

filename b 可执行二进制文件名

只能看二进制文件



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值