關於程式記憶體的問題

2022-02-03 03:14:35 字數 711 閱讀 2549

首先要確定一點就是,乙個程式在啟動以後,系統才會為這個程式分配記憶體,記憶體無非就這幾種:虛擬記憶體,記憶體,快取記憶體,暫存器,姑且叫這些記憶體是物理記憶體吧,因為它們都是以物質形式存在,不是玩概念的.注意,此處說的物理記憶體與大眾說的物理記憶體是不一樣的.

然後再來看程式中使用的記憶體,這是玩概念的!

程式中的記憶體分為三類:靜態記憶體,棧記憶體,堆記憶體. 這個是根據變數(或物件)定義形式的不同,而採用不同的記憶體管理方式,至於某個變數(或者)是放在上面說的哪種物理記憶體中,這個就由系統來管理了.程式真的管不了,因為系統會把程式"切來切去",暫時用不著的就切到最慢的物理記憶體中去,要幹活的就切到cpu中的暫存器中去.

static,const 加了這些關鍵字的物件就放在靜態記憶體中,函式的引數就放在棧記憶體中,new,malloc,heapalloc這三個函式或者運算子使用的記憶體就是堆中的.至於說到速度,我的分析是這樣的,函式在cpu中執行的時候,才會有分配函式引數記憶體這麼一說.所以它應該是最快的;其次,我也不知道靜態物件的堆上面的物件哪個訪問更快一點,如果它放在不一樣的記憶體上,這就好判斷了,可是這個地方只是玩的概念.

再多說一點點. new 是c++中的運算符號,增加了對"物件"建構函式的呼叫,malloc沒有這個物件為物件完成初始化工作,但是new裡面是使用malloc的,malloc是c的函式,c是跨平台的,那在windows中malloc是呼叫的heapalloc()這個函式在堆上面開闢記憶體的.至於malloc在其它系統上面呼叫什麼api,我真的不知道!

關於我的程式的記憶體越界問題

最近我編的程式出了乙個問題 在我的win7系統上,編譯鏈結執行都不報錯,短時間的執行程式也沒有問題,時間短的話可以執行成功,得到結果。但是如果設定的引數大一些,讓程式執行2天以上的時候,在執行到一半的時候就會報錯,程式中止。如果點除錯,會出來乙個對話方塊,有路徑選擇 please enter the...

關於記憶體洩漏和記憶體溢位的問題

很早就想寫這篇部落格,一直沒有時間,開篇一句話概括兩者的關係 記憶體洩漏導致記憶體溢位 那就先說一下記憶體洩漏吧,某乙個位置的記憶體洩漏,或者說導致一次記憶體洩漏沒有什麼大的影響,但是累積起來多了,那就造成了oom記憶體溢位的錯誤了,那麼什麼是記憶體洩漏呢換句話說什麼能導致記憶體洩漏呢,怎樣避免記憶...

關於iframe記憶體洩露的問題

5.17日,最近幾天上網狂搜以及實踐了一下,發現普遍的說法是使用iframe確實會導致大量的記憶體得不到釋放 5.21日 最近嘗試了各種方法 1.直接寫死乙個iframe,通過js改變src的方法,結果 記憶體問題還是存在 2.通過jquery的load 方法,將返回的結果嵌入到乙個div中,結果 ...