malloc最多能分配多大的記憶體空間?

2021-09-22 05:15:16 字數 871 閱讀 1487

malloc的全稱是memory allocation,中文叫動態記憶體分配,用於申請一塊連續的指定大小的記憶體塊區域以void*型別返回分配的記憶體區域位址,當無法知道記憶體具體位置的時候,想要繫結真正的記憶體空間,就需要用到動態的分配記憶體。

void* 型別表示未確定型別的指標。c,c++規定,void* 型別可以通過型別轉換強制轉換為任何其它型別的指標。一般需和free函式配對使用。但是,malloc最多能分配多大的空間呢?

位址空間限制是有的,但是malloc通常情況下申請到的空間達不到位址空間上限。記憶體碎片會影響到你「一次」申請到的最大記憶體空間。比如你有10m空間,申請兩次2m,一次1m,一次5m沒有問題。但如果你申請兩次2m,一次4m,一次1m,釋放4m,那麼剩下的空間雖然夠5m,但是由於已經不是連續的記憶體區域,malloc也會失敗。系統也會限制你的程式使用malloc申請到的最大記憶體。windows下32位程式如果單純看位址空間能有4g左右的記憶體可用,不過實際上系統會把其中2g的位址留給核心使用,所以你的程式最大能用2g的記憶體。除去其他開銷,你能用malloc申請到的記憶體只有1.9g左右。

最多能完成排序的塊題解

沒有 陣列arr是 0,1,n 1 的一種排列,我們將這個陣列分割成幾個 塊 並將這些塊分別進行排序。之後再連線起來,使得連線的結果和按公升序排序後的原陣列相同。我們最多能將陣列分成多少塊?輸入格式 共兩行。第一行為正整數n,代表陣列有n個數。第二行為n個整數。輸出格式 最多能將陣列分成的塊數。樣例...

malloc分配空間的問題

include h include h int main memset p,0,sizeof p 使陣列中的每個值首先都為0 p 0 0 1 sum 1 x 0 y 0 while sum 按照蛇形賦值 printf 輸出n階矩陣 n for i 0 iprintf n goto loop retu...

使用python測測你的系統最多能建立多少個執行緒

使用python測測你的系統最多能建立多少個執行緒 2012 12 09 08 27 00 收藏 使用乙個迴圈,不斷的建立執行緒,直到出現異常,才通知它們。python真是個好東西。如下 usr bin env python coding gbk import threading import ti...