C 程式記憶體分配的問題

2021-03-31 19:30:42 字數 724 閱讀 2217

概述:

在c++中物件可以靜態分配——即編譯器在處理程式源**時分配也可以動態分配——即程式執行時呼叫執行時刻庫函式來分配。靜態記憶體分配是在程式執行之前進行的因而效率比較高,而動態記憶體分配則可以靈活的處理未知數目的元素。

分析

靜態與動態記憶體分配的兩個主要區別是:1.靜態物件是有名字的變數我們直接對其進行操作而動態物件是沒有名字的變數,我們通過指標間接地對它進行操作。2.靜態物件的分配與釋放由編譯器自動處理,程式設計師需要理解這一點但不需要做任何事情,相反動態物件的分配與釋放必須由程式設計師顯式地管理相對來說比較容易出錯,它通過new 和delete 兩個表示式來完成。

舉例:

靜態分配:int a=100;

指示編譯器分配足夠的儲存區以存放乙個整型值,該儲存區與名字a 相關聯然後用數值10 初始化該儲存區

.

動態分配:1.單個物件:int *a=new int(10);分配了乙個沒有名字的int 型別的物件物件初始值為10,然後表示式返回物件在記憶體中的位址,接著這個位址被用來初始化指標物件a,對於動態分配的記憶體惟一的訪問方式是通過指標間接地訪問。

釋放方法:delete a;

2.陣列分配:int *a=new int[5];分配了乙個含有5個整數元素的陣列,沒有辦法給動態分配的陣列的每個元素顯式地指定乙個初始值。釋放方法:delete a;

C 程式記憶體分配的問題

概述 在c 中物件可以靜態分配 即編譯器在處理程式源 時分配也可以動態分配 即程式執行時呼叫執行時刻庫函式來分配。靜態記憶體分配是在程式執行之前進行的因而效率比較高,而動態記憶體分配則可以靈活的處理未知數目的元素。分析 靜態與動態記憶體分配的兩個主要區別是 1.靜態物件是有名字的變數我們直接對其進行...

c 程式記憶體分配

乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結構中的堆是兩回事,分配方式倒是類...

C程式記憶體分配

在任何程式設計環境及語言中,記憶體管理都十分重要。在目前的計算機系統或嵌入式系統中,記憶體資源仍然是有限的。因此在程式設計中,有效地管理記憶體資源是程式設計師首先考慮的問題。第1節主要介紹記憶體管理基本概念,重點介紹c程式中記憶體的分配,以及c語言編譯後的可執行程式的儲存結構和執行結構,同時還介紹了...