在低位址
malloc分配heap的位址
int* arr=malloc(40*sizeof(int));
160b(實際164b或者168b,多出來的在頭部,用於記錄大小等資訊,但是返回的指標是在這個頭的後面)
執行free函式時,指標會機械地回退4b or 8b 獲取大小資訊,並且free掉後面相應大小的內容
int* arr=malloc(100*sizeof(int));
free(arr+60);
//出錯,指標會調到arr+58/59,將這裡面的內容解釋為記憶體塊大小再釋放
int arr[100];
//這樣靜態申請與堆無關,但也有head資訊
free(array);
arr[-1]=0;
//這樣把頭覆蓋掉了,會出錯
空閒的空間組成乙個鍊錶,每個head資訊都記錄了大小,下次malloc的時候遍歷一遍
怎麼分配《作業系統》會講
free只是把記憶體塊加到空閒鍊錶,因為反正可以覆蓋
作業系統可以把分散的零碎的空間弄成連續的空間,返回控制代碼(二級指標,是乙個指標列表)
void
**handle
=newhandle(40);
handlelock(handle);
//告訴作業系統不要挪動newhandle指向的記憶體,它們正在被控制代碼定址
handleunlock(handle);
void a()
棧裡有指標(棧指標)記錄已分配和未分配的邊界,每有乙個新函式分配區域性變數,他會移動,並將移動後的位址作為函式訪問變數的基位址;函式返回後,棧指標回退。
void b()
void c()
簡單講了下
假設ram有32個通用暫存器
alu進行加法乘法移位操作
雲筆記8 筆記管理
筆記管理 筆記管理的前端顯示 如果筆記名稱不為空,那麼按照名稱查詢。如果筆記名稱為空,筆記內容不為空按照筆記內容查詢。如果筆記名稱和內容都為空,那麼查詢某乙個固定的 layui form item layui inline text name name id name autocomplete of...
程式設計正規化12 筆記 編譯預處理 巨集展開
define w 40 define h 80 define pere 2 w h define max a,b a b?a b max 10,40 預處理替換為 10 40?10 40 速度比函式快 而且不需要管型別 max 40.2,hello 報錯 define func a,b,c char...
Socket程式設計(5)筆記
解析伺服器ip位址 客戶端軟體設計過程中,使用者使用網域名稱是或點分標識,需要將yuing或ip位址轉換為32位ip位址。兩個函式 解析伺服器端口號 客戶端可能使用服務名 如http 標識伺服器端口,需要轉為埠號 解析協議號 需將協議名轉為協議號 tcp客戶端軟體流程 1 確定伺服器的ip位址和埠號...