如圖所示,兩種分配內存的方法都能正確的分配內存,但是內存分配的空間確實不一樣的。
分析:
第一種分配方法:
首先,是對每一行分配,也就是 nWidth 中的每一個進行分配,所以,我們可以看到每一行的內存都是連續的,每一個都占據四個字節
但是,為nHeight分配內存的時候,是隨機的進行分配內存,所以內存的位置是不確定的,所以,出現了第一種情況
第二種分配方法:
首先,同樣是為 p 分配內存,現在 p 指向一個位置
但是,在第二句中,我們需要注意,是直接在 p[0] 出分配了所有需要的內存,所以,這個時候就全部分配完了,而且由于是一次性分配內存,故內存的地址肯定是連續的,運行結果也證明了這一點
釋放內存的兩種情況:
第一種情況由于是兩次不同的分配內存,所以,在釋放內存的時候,我們應選擇不同的區域進行釋放。
第二種情況,只是連續調用兩次 malloc ,所以,只需要連續兩次調用 free 即可完成釋放。
新聞熱點
疑難解答
圖片精選