我有一個指向結構數組的指針,當我嘗試初始化它時,出現了分段錯誤。結構的多維數組 - 分段錯誤
MyStruct **** node = NULL;
node[0][0][0] = new MyStruct();
我試圖使用2D數組,它工作正常。
出了什麼問題?
感謝您的回覆。
我有一個指向結構數組的指針,當我嘗試初始化它時,出現了分段錯誤。結構的多維數組 - 分段錯誤
MyStruct **** node = NULL;
node[0][0][0] = new MyStruct();
我試圖使用2D數組,它工作正常。
出了什麼問題?
感謝您的回覆。
嘗試動態分配第一陣列,使用操作者new
:
MyStruct ****node = new MyStruct***[MAX_SIZE];
for(int i=0; i<MAX_SIZE; ++i) node[i] = new MyStruct**[MAX_SIZE];
for(int i=0; i<MAX_SIZE; ++i)
for(int j=0; j<MAX_SIZE; ++j) node[i][j] = new MyStruct*[MAX_SIZE];
node[0][0][0] = new MyStruct();
您需要在使用前分配內存。你不能僅僅跳過3級而不分配和使用它。首先分配node
。然後你可以訪問node[0]
。如果您分配node[0]
,則可以訪問node[0][0]
。
繼續吧。
但是總的來說,更喜歡使用'std :: vector' –
@致命一吉他是的。只是回答這個問題。 –
是的,那是主要用於OP的:) –
只需使用載體。 –
http://c2.com/cgi/wiki?ThreeStarProgrammer – juanchopanza
矢量不是較慢嗎?好了,現在我把它重新編譯爲'vector>> node;'和仍然是段落 –
user3287183