• 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

  • 相关阅读:
    分解质因数
    大素数测试和分解质因数
    快速幂
    欧拉函数
    素数
    gcd,lcm,ext_gcd,inv
    凸包问题 poj 2187
    map的 简单用法
    判断线段是否在园内
    2-sat 问题
  • 原文地址:https://www.cnblogs.com/Sico2Sico/p/5384221.html
Copyright © 2020-2023  润新知