簡單的理解,可以將記憶體分為三個部分:靜態區,棧和堆,三個部分都有自己的許可權,不可以隨便讀寫。
靜態區:儲存自動全域性變數和static變數,靜態區的內容在總的程式的生命週期都存在,由編譯器在編譯的時候分配。
棧:儲存區域性變數。棧上的內容只在函式的範圍內存在,當函式結束,這些內容也會被自動銷毀,效率很高,但是空間有限。
堆:有malloc系列函式或new操作符來分配記憶體,宣告週期有free和delete決定,在沒有釋放之前一直存在,直到程式結束。
經常說的記憶體洩漏問題:會產生記憶體****存就是堆上的記憶體,也就是說由malloc或new分配的記憶體,用完之後沒有及時的free和delete掉,那麼這個記憶體就一直無法釋放,直到整個程式中止。
這裡旁註:
free(ptr);//只是將ptr和所指向的那塊記憶體取消聯絡,解除繫結,但是ptr本身儲存的位址並沒有改變,只是沒有使用權了,那塊記憶體的值也沒有變,只是沒有辦法使用了。
malloc()函式和free()函式成對使用,new操作符和delete操作符成對使用。
關於記憶體管理
什麼是記憶體管理?是指軟體執行時對計算機記憶體資源的分配和使用技術。其最主要的目的就是如何高效 快速的分配,並且在適當的時候釋放和 記憶體資源。在 ios 中資料是存在堆和棧中的,然而我們的記憶體管理管理的是堆上的記憶體,棧上的記憶體並不需要我們管理。引用計數是計算機程式語言中的一種記憶體管理技術,...
關於記憶體管理
記憶體管理涉及根據資料庫更改的需求為oracle database例項記憶體結構維護最佳大小。必須管理的記憶體結構是系統全域性區域 sga 和例項程式全域性區域 例項pga oracle資料庫支援各種由初始化引數設定選擇的記憶體管理方法。oracle建議您啟用稱為自動記憶體管理的方法。自動記憶體管理...
關於mysql記憶體管理 MYSQL記憶體管理及優化
mysql記憶體管理及優化 記憶體是影響資料庫效能的主要資源,也是mysql效能優化的乙個重要方面 記憶體優化的原則 將盡量多的記憶體分配給mysql做快取,但是要給作業系統和其他程式的執行預留足夠的記憶體,否則產生swap頁交換,將嚴重影響系統效能 myisam的資料檔案讀取以來作業系統自身的io...