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

  • 相关阅读:
    Shell-17--break-exit-continue-shift
    Shell-16--函数
    Shell-14--awk
    TCP带外数据读写
    Linux网络编程-----Socket地址API
    log4j日志级别
    JNI-Test
    游戏服务器当中的唯一名设计方法
    String和bytes的编码转换
    base64的一个应用情景
  • 原文地址:https://www.cnblogs.com/llguanli/p/7159964.html
Copyright © 2011-2022 走看看