C語(yǔ)言中多維數(shù)組的內(nèi)存分配和釋放(malloc與free)的方法
如果要給二維數(shù)組(m*n)分配空間,代碼可以寫成下面:
char **a, i;
// 先分配m個(gè)指針單元,注意是指針單元
// 所以每個(gè)單元的大小是sizeof(char *)
a = (char **) malloc(m * sizeof(char * ));
// 再分配n個(gè)字符單元,
// 上面的m個(gè)指針單元指向這n個(gè)字符單元首地址
for(i = 0; i < m; i++)
a[i] = (char * )malloc(n * sizeof(char ));
釋放應(yīng)該是:
int i;
for(i=0;i<m;i++)
free((void *)a[i]);
free((void *)a);
如果為三維數(shù)組(m*n*p)分配空間呢,應(yīng)該是:
char ***a, i, j;
a = (char ***) malloc(m * sizeof(char ** ));
for(i = 0; i < m; ++i)
a[i] = (char **) malloc(n * sizeof(char * ));
for(i = 0; i < m; ++i)
for(j = 0; j < n; ++j)
a[i][j] = (char * )malloc(p * sizeof(char ));
釋放代碼為逆過(guò)程,具體代碼為:
int i,j,;
for(i = 0; i < m; ++i)
for(j = 0; j < n; ++j)
free((void *)a[i][j]);
for(i = 0; i < m; ++i)
free((void *)a[i]);
free((void *)a);
三維以上的多維數(shù)組的分配和釋放,原理與上面的一樣。
相關(guān)文章
C++項(xiàng)目開(kāi)發(fā)實(shí)現(xiàn)圖書管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++項(xiàng)目開(kāi)發(fā)實(shí)現(xiàn)圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03C語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)和雙向鏈表操作
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)雙向鏈表操作,需要的朋友可以參考下2017-03-03C/C++獲取主機(jī)網(wǎng)卡MAC地址的三方法
MAC地址(Media Access Control address),又稱為物理地址或硬件地址,是網(wǎng)絡(luò)適配器(網(wǎng)卡)在制造時(shí)被分配的全球唯一的48位地址,通過(guò)獲取MAC地址可以判斷當(dāng)前主機(jī)的唯一性可以與IP地址綁定并實(shí)現(xiàn)網(wǎng)絡(luò)準(zhǔn)入控制,本文給大家介紹了使用C/C++獲取主機(jī)網(wǎng)卡MAC地址的三方法2023-11-11