• 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 释放

  • 相关阅读:
    oracle 常用SQL
    ActiveMQ持久化方式
    集中队列的模式
    EDA: Event-Driven Architecture事件驱动架构
    ActiveMQ消息队列介绍
    Nginx 用log_format设置日志格式
    log4j的ConversionPattern参数的格式含义
    真正的轻量级WebService框架——使用JAX-WS(JWS)发布WebService
    Java的注解机制——Spring自动装配的实现原理
    java interface 默认值
  • 原文地址:https://www.cnblogs.com/llguanli/p/7159964.html
Copyright © 2020-2023  润新知