3 回答

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊
我讀到malloc可以分配的最大內(nèi)存被限制為物理內(nèi)存(在堆上)。
錯(cuò)誤:大多數(shù)計(jì)算機(jī)/操作系統(tǒng)都支持虛擬內(nèi)存,并以磁盤空間為后盾。
一些問題:是否malloc也從HDD分配內(nèi)存?
malloc 詢問操作系統(tǒng),操作系統(tǒng)可能會(huì)占用一些磁盤空間。
出現(xiàn)上述行為的原因是什么?為什么循環(huán)沒有隨時(shí)中斷?
為什么沒有分配失???
您一次只請求了很少的請求:循環(huán)最終將中斷(很久之后,由于虛擬內(nèi)存和物理內(nèi)存的大量過量以及隨之而來的超頻繁磁盤訪問,您的計(jì)算機(jī)速度下降,這稱為“崩潰”問題”),但在此之前您筋疲力盡。嘗試一次獲取一個(gè)兆字節(jié)。
當(dāng)程序超出一定程度的內(nèi)存消耗時(shí),計(jì)算機(jī)將停止工作,因?yàn)槠渌麘?yīng)用程序無法獲得所需的足夠內(nèi)存。
完全停止是不可能的,但是當(dāng)通常需要幾微秒的操作最終要花費(fèi)(例如)數(shù)十毫秒時(shí),這四個(gè)數(shù)量級(jí)肯定會(huì)使人感覺好像計(jì)算機(jī)已經(jīng)基本停止了,并且通常需要花費(fèi)什么時(shí)間一分鐘可能要花一個(gè)星期。

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊
malloc它自己執(zhí)行內(nèi)存管理,自己管理小內(nèi)存塊,但最終它使用Win32 Heap函數(shù)分配內(nèi)存。您可以將其malloc視為“內(nèi)存經(jīng)銷商”。
Windows內(nèi)存子系統(tǒng)包括物理內(nèi)存(RAM)和虛擬內(nèi)存(HD)。當(dāng)物理內(nèi)存不足時(shí),可以將某些頁面從物理內(nèi)存復(fù)制到硬盤驅(qū)動(dòng)器上的虛擬內(nèi)存。Windows透明地執(zhí)行此操作。
默認(rèn)情況下,虛擬內(nèi)存處于啟用狀態(tài),并將占用HD上的可用空間。因此,測試將繼續(xù)運(yùn)行,直到為該進(jìn)程分配了全部虛擬內(nèi)存(32位窗口上為2GB)或填滿了硬盤。
- 3 回答
- 0 關(guān)注
- 1239 瀏覽
添加回答
舉報(bào)