動態記憶體會被自動釋放嗎?

2022-05-29 13:54:16 字數 540 閱讀 7122

函式體內的區域性變數在函式結束時自動消亡。很多人誤以為示例

7-6是正確的。理由是

p是區域性的指標變數,它消亡的時候會讓它所指的動態記憶體一起完蛋。這是錯

覺!void func(void)

我們發現指標有一些「似是而非」的特徵:

1)指標消亡了,並不表示它所指的記憶體會被自動釋放。

(2)記憶體被釋放了,並不表示指標會消亡或者成了

null

指標。

這表明釋放記憶體並不是一件可以草率對待的事。也許有人不服氣,一定要找出可以草率行事的理由:

如果程式終止了執行,一切指標都會消亡,動態記憶體會被作業系統**。既然如此,在程式臨終前,就可以不必釋放記憶體、不必將指標設定為null了。終於可以偷懶而不會發生錯誤了吧?

想得美。如果別人把那段程式取出來用到其它地方怎麼辦?

C語言 動態記憶體會被自動釋放嗎?杜絕「野指標」

函式體內的區域性變數在函式結束時自動消亡。很多人誤以為示例是正確的。理 由是p 是區域性的指標變數,它消亡的時候會讓它所指的動態記憶體一起完蛋。這是錯覺!void func void 示例 試圖讓動態記憶體自動釋放 我們發現指標有一些 似是而非 的特徵 1 指標消亡了,並不表示它所指的記憶體會被自動...

動態記憶體建立與釋放

使用時應加上標頭檔案 include 一.申請動態記憶體 申請動態記憶體 malloc calloc realloc,申請的動態記憶體分為多少份此函式無法明確,所以應在malloc calloc realloc前面加上型別 1.malloc malloc函式的形參為所要申請的動態記憶體位元組數 動態...

動態記憶體的分配與釋放

1.new與delete運算 c 提供了兩個中重要的運算子 new和delete。由於他們是運算子不是函式,因此執行效率更高。運算子功能 目結合性 用法new 動態分配 單目自右向左 new type new動態分配陣列 單目自右向左 new type delete 釋放空間 單目自右向左 dele...