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 釋放
轉載于:https://www.cnblogs.com/llguanli/p/7159964.html
總結
以上是生活随笔為你收集整理的Summary Day30的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 语音交互设备 前端信号处理技术和语音交互
- 下一篇: 身份证前6位对应的省市区县