2014-03-29 49 views
1

我有一個指向結構數組的指針,當我嘗試初始化它時,出現了分段錯誤。結構的多維數組 - 分段錯誤

MyStruct **** node = NULL; 
node[0][0][0] = new MyStruct(); 

我試圖使用2D數組,它工作正常。

出了什麼問題?

感謝您的回覆。

+1

只需使用載體。 –

+3

http://c2.com/cgi/wiki?ThreeStarProgrammer – juanchopanza

+0

矢量不是較慢嗎?好了,現在我把它重新編譯爲'vector >> node;'和仍然是段落 – user3287183

回答

0

嘗試動態分配第一陣列,使用操作者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(); 
1

您需要在使用前分配內存。你不能僅僅跳過3級而不分配和使用它。首先分配node。然後你可以訪問node[0]。如果您分配node[0],則可以訪問node[0][0]

繼續吧。

+0

但是總的來說,更喜歡使用'std :: vector' –

+0

@致命一吉他是的。只是回答這個問題。 –

+0

是的,那是主要用於OP的:) –