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