【无标题】

本文详细探讨了内存四区(代码段、数据段、堆和栈)的概念,重点讲解了常量区的作用与特性,以及静态变量和const关键字的内存分配。同时涵盖了malloc与free的内存操作和注意事项,以及一级和二级指针的概念。
摘要由CSDN通过智能技术生成

内存四区

1、正文段或者代码段:    程序运行时的代码, 只读的
2、数据段:  
       未初始化数据段: 存储未初始化的静态变量或者全局变量, 系统会自动初始化为0
       初始化数据段:    存储初始化的静态变量或者全局变量
       常量区:         常量 、const 修饰的静态变量和全局变量

3、堆: 程序员自己进行管理的,使用时需要申请,使用完需要释放内存

4、栈:局部变量、形参、保护现场   ps:栈区不会自动初始化的

int  g_num = 99;

int main()
{
    static int b;
    const int  a;//存在栈区

    const static int c = 0;
    int *p = &c;

    *p = 10;
    return 0;
}

const  

防止变量被恶意修改

enum 


1、定义枚举,本质就是定义一组常量

2、语法:

  enum   名称{
       常量1,
       常量2,
       ...
       常量n,
   };


3、默认常量值从0开始, 后面依次递增, 也可以手动设置常量值

4、枚举是占内存空间的, 可以使用gdb查看 (p  \d  常量名称)

extern :

1、全局变量的声明
2、外部函数的声明

static  :

1、修饰变量, static修饰的变量称为静态变量, 生存期是程序开始----》程序结束都是存在的
   静态局部变量作用域: 在定义的函数内部
   静态全局变量作用域:  定义的.c文件内部

2、修饰函数, 静态函数,只能在定义的.c文件内部调用,不能被其他.c文件调用

malloc

申请内存:  malloc
释放内存:  free
注意事项:
1、内存越界

2、内存泄露:  不用的内存空间,要及时释放

3、二次释放:  不要二次释放

4、释放完内存之后,要记得将指针指向NULL

一级指针:  让普通变量得到地址传参

二级指针:  让一级指针变量得到地址传参

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值