zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    练习写一个工资结算系统
    【课堂】模拟奥特曼打小怪兽
    模拟简单对打(昨天代码的小修改)
    模拟简单游戏创建类
    数组的应用练习
    Java基础的思维导图
    springBoot集成MyBatis和Mybatis自动生成代码GeneratorMapper.xml配置
    ubuntu14.04安装eclipse没有标题
    ubuntu14.04安装Hadoop0.20.2
    Apache编码问题
  • 原文地址:https://www.cnblogs.com/Sico2Sico/p/5384221.html
Copyright © 2011-2022 走看看