• Summary Day30


    1.内存管理

    1.1 进程中的内存区域划分

      代码区   仅仅读常理区    全局区    BSS     堆   栈


    1.2 字符串存储形式之间的比較

       字符指针,字符数组。字符动态内存


    1.3 虚拟内存管理技术

    Unix/Linux系统总的内存都是採用虚拟内存管理技术进行管理。即:每一个进程都有0~4G的内存地址

    (虚拟的并非真实存在的),由操作系统负责把内存地址和真实的物理内存映射起来,因此,不同进程

    的内存地址看起来是一样的,可是所相应的物理内存是不一样的。

    用户空间 0~3G。 虚拟内核空间3~4G 


    1.4 段错误的由来

    (1)scanf函数缺少 &

    (2)空指针、野指针的使用

    (3)师徒使用一个没有经过映射的虚拟地址可能引发段错误

    1.5使用malloc申请动态内存的特性

    须要额外的12个字节用于存储管理动态内存信息

    採用链表的方式处理多个内存块

    使用malloc千万不要越界

    (2)使用malloc 申请内存的一般映射

    一般说来。使用malloc申请较小的内存时,操作系统一次性分配33个内存页

    #include <unistd.h>

    getpid() 获取当前进程的进程号

    cat / proc/ 进程号/maps 查看指定进程的内存分配情况

    1.6使用free释放动态内存特性

    1.7 内存处理相关函数

    (1)getpagesize 函数

    函数功能:

    主要用于获取当前系统中一个内存页大小。一般为4kb


    (2)sbrk函数

    #inlcude <unistd.h>

    void *sbrk(intptr_t increment);

    (3)brk函数

    int brk(void *addr);

    sbrk 申请 brk 释放

  • 相关阅读:
    c#常用正则表达式
    亲密接触Discuz!NT之架构篇:优良架构 方便网站整合与二次开发
    即时对话,在线对话,QQ,MSN,UC,popo
    C#事务处理
    正则表达式中的特殊字符
    9:38 2009729
    16:43 200981 缓解疲劳的七大唱片 免费短信
    复选框 全选
    9:05 2009721
    9:34 2009728
  • 原文地址:https://www.cnblogs.com/llguanli/p/7159964.html
Copyright © 2020-2023  润新知