課程
/后端開發
/C++
/C++遠征之離港篇
請問二維數組怎么申請和釋放內存?謝謝
2015-12-10
源自:C++遠征之離港篇 5-4
正在回答
char?**str?=?new?char*[100]; ?for?(int?i?=?0;?i?<?100;?i++) ??str[i]?=?new?char[100]; ?//這樣就申請好了二維字符數組了。 ?//釋放時也是類似 ?for?(int?i?=?0;?i?<?100;?i++) ?{ ??for?(int?j?=?0;?j?<?100;?j++) ??{ ???if?(str[i]!=?NULL) ???{ ????delete?str[i]; ???} ??} ??delete?str; ?}
Soardbjiao 提問者
前面的答案有個問題:str并不是傳統意義的二維數組。
二維數組一般這樣定義 int a[10][10]; ?這樣a中的100個元素在內存中是連續存放的。
可以按照答案那樣寫的話,str指向的是char*數組,其中的100個char指針指向另外的100個char數組,也就是這10000個char并不是連續存放的!
很多時候會依賴于二維數組連續存放元素的特性而用指針來訪問整個數組空間,這種方法就不適用于str所指的數組了。
贊同一樓
申請內存char *str = new char[100];
釋放內存delete []str;????????????????str = NULL;
舉報
C++掃清通往面向對象的最后一道障礙,將所有知識點融會貫通
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-12-10
2015-12-11
前面的答案有個問題:str并不是傳統意義的二維數組。
二維數組一般這樣定義 int a[10][10]; ?這樣a中的100個元素在內存中是連續存放的。
可以按照答案那樣寫的話,str指向的是char*數組,其中的100個char指針指向另外的100個char數組,也就是這10000個char并不是連續存放的!
很多時候會依賴于二維數組連續存放元素的特性而用指針來訪問整個數組空間,這種方法就不適用于str所指的數組了。
2015-12-10
贊同一樓
2015-12-10
申請內存char *str = new char[100];
釋放內存delete []str;
????????????????str = NULL;