我在VC++ 2008中工作,並試圖分配一個多維的字符數組來做一些文件工作。我知道每當一個數組被分配時,數組的所有成員都應該按照連續順序進行初始化。我現在有這個。初始化多維數組C++
char ** thing = new char *[lineY];
for (int ii = 0; ii < lineY; ii++){
thing[ii] = new char[lineX];
}
... // working with array
// deleting each part of the array.
for (int ii = 0; ii < lineY; ii++){
delete [] thing[ii];
}
delete [] thing;
,我運行到的問題是,如果我的陣列添加到觀察名單,或將中斷其被分配的調試狀態之後,該陣列的容量相當於一個數字,如51,或32,而不是與指標值的空間,但塊時我嘗試讓我的配置來初始化各指標的值,這樣的:
char ** thing = new char *[lineY];
for (int ii = 0; ii < lineY; ii++){
thing[ii] = new char[lineX];
for (int jj = 0; jj < lineX; jj++){
thing[ii][jj] = '';
}
}
編輯:編譯器會引發「C2137空字符常量」 AM我做錯了什麼? 編輯:讀取msdn的錯誤號,並找到答案
只是一個小問題,爲什麼在地球上,你會永遠做手工n維數組分配? – ScarletAmaranth 2012-02-08 11:04:02
@ScarletAmaranth當你不需要生成一個只用於它的實例的對象時,只要你記得動態OOP的關鍵原則就可以動態地分配內存:破壞你新的東西,管理你有的東西,只在需要時分配。除此之外,它與實例化分配n維數組的對象相同。我只是避免了一堆訪問者。 – gardian06 2012-02-08 11:17:38
您可以隨時分配一個數組,按行/列 - 主要順序存儲所有元素,並設置類似二維數組的指針。 – suszterpatt 2012-02-08 12:38:50