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

最新文章

  1. 【转】WordPress转PHPCMS策略-数据库完美转换
  2. 调试 rewrite
  3. Sqoop2环境搭建
  4. nginx二级域名配置
  5. Git CMD - reset: Reset current HEAD to the specified state
  6. linux系统基础(一)
  7. Bzoj3990 [SDOI2015]排序
  8. [SDOI2009]晨跑
  9. 使用JavaScript实现一个俄罗斯方块
  10. 如何编写 PL/SQL 程序
  11. python第九天
  12. 批处理REG学习
  13. 深入理解朴素贝叶斯(Naive Bayes)
  14. css基础--常用css属性02
  15. 在Powerdesigner中创建概念数据模型
  16. pickle &amp; cPickle ValueError: unsupported pickle protocol: 3
  17. swoole WebSocket 消息推送
  18. 自己做的jquery的autocomplete的一个例子
  19. java===字符串常用API介绍(转)
  20. 单能X射线产生方法

热门文章

  1. 用AOP改善javascript代码
  2. jersey+jetty实现文件上传
  3. Android开发数据库之第三方ORM框架(GreenDao)
  4. linux 批量设置文件夹755 文件644权限
  5. visibility-控件的显示跟隐藏设置
  6. php如何读写excel
  7. SQL数值转字符串保留指定小数位
  8. Mahout应用
  9. go reflect 调用方法
  10. JS实践与写博客-序