c程式執行時是不是會不停佔用新記憶體?至於記憶體

2022-03-04 13:38:48 字數 1677 閱讀 1710

1樓:匿名使用者

是不是正常的程式都存在佔用記憶體後就釋放記憶體?

這要分情況:非動態分配的記憶體是程式在執行中一直佔用著的。動態分配的記憶體會隨著資料的變化和程式的執行在動態變化的,有時會需要很多,有時不需要,在不需要時,對已分配的記憶體是否進行釋放要看程式設計者對**的控制 。

一般情況下,良好的程式會對動態分配的記憶體進行用完後就釋放,在c++中一般是delete命令。 當然也存在程式設計和編寫缺陷時,不釋放,一味的申請,就會出現記憶體不段的被吞噬,造成記憶體洩露和記憶體碎片,導致機器執行出現問題。但這樣的情況,在程式退出後或機器重起後會解決。

2樓:草叢裡的落葉

你自己分配的記憶體,最好在使用完以後進行釋放,不然容易導致記憶體洩露,就是你的程式執行越來越大,記憶體洩露小,程式執行時間不是很長那到無所謂,洩露嚴重或執行時間長久容易死。

3樓:

正如你所說,正常程式在執行過程中總是在不斷地佔用新的記憶體,也在不斷地釋放記憶體。釋放記憶體就是把你的程式執行中佔用的記憶體空間交還給系統管理,程式有新的記憶體需求時,這部分空間就可以分配給它使用。c++**中由new申請分配的記憶體在程式執行期間不能自動釋放,不再需要這部分**時,要在**中通過delete操作符釋放。

記憶體佔用太多時,程式就沒有足夠的內在空間執行,就會出現宕機,這就是常常說的由內在洩漏產生的宕機……

釋放記憶體是什麼意思?

4樓:曾塔裡

把用作系統快取的記憶體,通通釋放成空閒記憶體,系統效能,

把其它已經推出的程式所佔記憶體釋放用於將要執行的程式。主要是某些程式退出時電腦不會馬上釋放它所佔的記憶體,導致記憶體不足,影響速度。

windows系統和它下面的很多應用軟體,包括微軟自己開發的軟體,都有一個毛病,喜歡儘可能多的佔用記憶體,大型軟體尤其如此,靠大記憶體加快自身的執行速度。但當這個軟體退出時,卻往往並不能完全釋放自己佔用的記憶體。這樣問題產生了,電腦用的時間越長,可用記憶體就越少,速度越慢。

而此時表面上看起來,並沒有大型軟體在執行,系統程序裡也看不到哪個軟體佔了大量記憶體。

基於這種情況,就有人開發了記憶體整理軟體。記憶體空間的分配,都會報告給作業系統,然後這個軟體就會讀出所有的記憶體分配,再比對佔用它的軟體是否還在執行,如果否,就把這塊記憶體標為空閒。這就是記憶體釋放。

在95、98的時代,記憶體整理軟體的作用還是比較大的,而現在的xp、vista其實都是nt的核心,對記憶體的使用要遠比95、98合理,這種軟體退出仍然佔用大量記憶體的現象就少了。而記憶體整理軟體本身,卻還要佔用一定的記憶體,所以現在看來,作用不是很大。

5樓:

cpu處理資料只能記憶體(xp系統定義為頁面檔案pagefile,就是包括虛擬呢ucn)中的,任何軟體執行時都要在記憶體中申請空間。但是當軟體關閉後者部分空間可能仍被佔著,導致其他程式無法使用這部分空間,記憶體容量變小,系統效能下降。

記憶體清理就是將這部分被申請但是沒有被使用的記憶體釋放出來,或是將不被使用的程式移出實體記憶體。

ps需要專門的軟體。

6樓:火狐狸乖乖

就是把在記憶體裡面不用的資訊釋放了那樣新的程式執行的時候有就空間了

7樓:匿名使用者

就是講軟體佔用的記憶體釋放,可以增加執行速度,總的來說沒有什麼作用

8樓:匿名使用者

釋放正在佔用的記憶體使用率。

C 程式執行時的記憶體空間如何分割槽

c 程式的內純格局通常分為4個區 1.資料區 data area 2.區 code area 3.棧區 stack area 4.堆區 即自由儲存區 heap area 全域性變數 靜態變數 常量存放在資料區,所有類成員函式和非成員函式 存放在 區,為執行函式而分配的區域性變數 函式引數 返回資料 ...

閱讀程式並把程式的執行時輸出結果寫出請給詳細步驟

倒敘輸出,gninrom doog。第一個for你肯定知道是怎麼回事了,就 是把p置為str1最後一位的地址,注意這裡是地址。然後關鍵來了,第二個for。注意條件是 p str1。這個條件看上去有點奇怪,不過如果你對指標夠了解的話,還是比較簡單的。p現在是str1最後一位的地址,先 得到倒數第二位的...

c語言中,scanf函式中用d,執行時輸入數值時要用空格隔

scanf函式中用 d,執行時輸入數值時不要用空格隔開,就會把二個整數當作是專 一個整數 並且屬scanf讀入數值時,會把前面的空格自動忽略的。但如果用 c就不行,因為空格也是一個字元,也可以用 c讀入的。因為 c只取一個字元 d就未必了 c語言中用scanf函式輸入字元時,為什麼要在輸入控制符 c...