Linux_ 内存管理

  1. 内存管理

什么是内存?

内存是一种稀缺资源。

Linux程序不允许直接访问物理内存,都通过虚拟内存的方式访问。
物理地址
虚拟地址

Linux通过内核的”存储管理”,给用户提供了”虚拟内存”。
虚拟内存可以比实际的物理内存大。

  1. 内存分配
    1)简单的内存分配
    使用malloc
    以字节为单位进行分配
    返回一个虚拟内存地址。
    返回的类型是void *, 需要进行类型转换。

    注:
    int *buff = malloc(1024);
    //在赋值时,进行了自动类型转换
    //建议进行显式类型转换:int buff = (int)malloc(1024);

    不能对void*类型的指针直接读写。
    对void*类型指针进行访问时,需要先进行类型转换。

    实例:main1.c

  2. 分配大量的内存
    可以使用malloc分配大块的内存。
    malloc能分配的内存总量可以比实际物理内存大。
    实例:main2.c

    当物理内存快耗尽时,Linux将使用“交换空间”
    交换空间是当安装linux系统时分配的一个磁盘空间。
    linux把物理内存中的某些页“搬”到交换空间中,以得到更大的物理内存。
    当物理内存和交换空间都耗尽时,linux内核则把该应用程序“杀死”。
    实例:main3.c

  3. 内存的恶意使用
    当非法使用内存时,将产生“段错误”
    实例: main4.c

    空指针的使用
    linux不允许访问空指针。
    实例:main5.c

  4. 内存的释放
    free的参数,必须是malloc(或calloc/realloc)返回的指针!
    实例:main6.c

  5. 其他分配函数
    calloc
    realloc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值