1樓:匿名使用者
當然不一樣,下面詳細講解一下記憶體分配的幾個區:
棧:就是那些由編譯器在需要的時候分配,
在不需要的時候自動清除的變數的儲存區。
裡面的變數通常是區域性變數、函式引數等。
在一個程序中,位於使用者虛擬地址空間頂部
的是使用者棧,編譯器用它來實現函式的呼叫。
和堆一樣,使用者棧在程式執行期間可以動態地擴充套件和收縮。
堆:就是那些由 new 分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般一個 new 就要對應一個 delete。
如果程式設計師沒有釋放掉,那麼在程式結束後,作業系統會自動**。
堆可以動態地擴充套件和收縮。
自由儲存區,
就是那些由 malloc 等分配的記憶體塊,他和堆是十分相似的,不過它是用 free 來結束自己的生命的。
全域性/靜態儲存區,
全域性變數和靜態變數被分配到同一塊記憶體中,
在以前的 c 語言中,全域性變數又分為初始化的和未初始化的(初始化的全域性變數和靜態變數在一塊區域,未初始化的全域性變數與靜態變數在相鄰的另一塊區域,同時未被初始化的物件儲存區可以通過 void* 來訪問和操縱,程式結束後由系統自行釋放),在 c++ 裡面沒有這個區分了,他們共同佔用同一塊記憶體區。
常量儲存區,
這是一塊比較特殊的儲存區,他們裡面存放的是常量,不允許修改
2樓:山西優就業
如樓上所說,常量儲存區裡面的資料是放在**段裡的,不佔記憶體。靜態儲存區是在記憶體空間中的,在其所屬的類(或檔案)中是全域性的。
c語言中const好像沒有用處。
static const int a=10;我個人認為是存到靜態區的。你可以上網搜一下static const修飾的變數是如何賦初值的,一般有兩種方法。一是定義時直接賦初值,二是類外賦初值。
而常量是無法用這兩種方法賦初值的。
3樓:天o之o痕
自由儲存區部分有誤
new是物件例項化時使用的 關鍵字 ,使用它就會呼叫建構函式以及malloc函式申請記憶體,而delete也是關鍵字,使用它會呼叫解構函式和free函式釋放記憶體,因此不存在new/delete和malloc/free之間存在差異的說法,從記憶體管理的角度來說他們是沒有區別的,因此自由儲存區純屬子虛烏有,malloc申請的記憶體是堆上的。
c++靜態儲存區,棧和堆的區別
4樓:匿名使用者
靜態儲存區:記憶體bai在程式編譯的時候就du已經分配好,zhi這塊內dao
存在程式的整個執行回期間都存在。它主要存答放靜態資料、全域性資料和常量。
棧區:在執行函式時,函式(包括main函式)內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內建於處理器的指令集中,效率很高,但是分配的記憶體容量有限。
(任何變數都處於站區,例如int
a = ,變數a處於棧區。陣列的內容也存在於棧區。)
堆區:亦稱動態記憶體分配。程式在執行的時候用malloc或new申請任意大小的記憶體,程式設計師自己負責在適當的時候用free或delete釋放記憶體。
動態記憶體的生存期可以由我們決定,如果我們不釋放記憶體,程式將在最後才釋放掉動態記憶體。
但是,良好的程式設計習慣是:如果某動態記憶體不再使用,需要將其釋放掉,並立即將指標置位null,防止產生野指標。
c/c++記憶體分幾部分啊?堆、棧、靜態儲存區,還有別的沒?
5樓:溫柔_汋逩此
首先分為兩部分 暫存器和記憶體(包括快取)
記憶體分為兩部分 **和資料。
資料分為兩部分 靜態儲存區和執行時儲存。
執行時儲存分為 堆疊和堆。
靜態儲存分為 全域性靜態儲存和常量。
遠近光燈是一樣的嗎,近光燈和遠光燈的標誌區別
不一樣的 焦距不一樣 近光只能在較大的面積上照亮,距離近 遠光能在較小的面積上照亮,距離遠 同一個燈泡但有兩個燈絲。汽車的燈泡遠近光設計分兩類一種是遠近光一體式的 這一體式又分兩種 第一種是h4型燈泡,很多中低端車在用,大燈只有一組燈泡 左右各一 然後一個燈泡裡有兩組燈組。近光狀態只亮一組,功率為5...
白米醋和純米醋是一樣嗎,米醋和白醋有什麼區別!?
肯定不一樣的。1 白醋則分為一般白 米 醋和 純 米醋兩種,純 米醋是由大米,高粱,黃豆等採用民間最原始的手工釀造工藝形成,也就要高些味道純正,對預防中暑有一定的效果。而且對調理腸胃也有不錯的功效。而一般白 米 醋釀造白醋是以食用酒精為原料,經醋酸發酵而成。配製白醋主要是以食用冰醋酸為原料配製成。其...
驕傲和高傲的意思一樣嗎,高傲和驕傲有什麼區別
dy落花挺好 不一樣。傲嬌是指人物為了掩飾害羞靦腆而做出態度強硬高傲表裡不一的言行的代名詞。驕傲是一種內在的情緒狀態,一般而言,有兩大類常見的意涵。第一類,作為負面的意思,驕傲是指一種對於個人的地位或成就的自我膨脹與炫耀,通常與傲慢 hubris 是同義詞。第二類,作為正面的意思,驕傲是一種對於達成...