13.10 Write a function in C called my2DAlloc which allocates a two-dimensional array. Minimize the number of calls to malloc and make sure that the memory is accessible by the notation arr[i][j].
這道題讓我們寫個C語言函數my2DAlloc用來給一個二維數組配置設定記憶體,并且讓我們盡可能的少調用malloc函數。一個二維數組實際是數組的數組,我們用指針來表示數組,用雙指針來表示二維數組。我們首先建立一個一維數組,對于每個位置,再建立一個一維數組,這樣我們就得到了一個二維數組,參見如下代碼:
關于釋放記憶體,我們不能僅僅釋放rowptr,我們要確定每個cell中的記憶體也被釋放了,參見如下代碼:
其實我們還可以在連續的記憶體塊上來配置設定記憶體,例如對于一個5行6列的二維數組,我們可以在開頭的五個記憶體塊裡存上每一行的起始位址,後面的五行資料是連續排列的,一行接着一行,參見代碼如下: