[問題] 遇到奇怪的陣列問題

看板C_and_CPP (C/C++)作者 (加路~)時間16年前 (2009/06/13 17:51), 編輯推噓4(4013)
留言17則, 4人參與, 最新討論串1/1
由於自己本身沒有什麼程式的底子, 大部分都是有需要才邊寫邊摸出來的, 所以平常語法也都亂七八糟混著用, 函式庫很多也不管有沒有用就貼上去.... 今天寫到一半的時候遇到個奇怪的問題, 無論怎麼執行都會當掉, 最後終於找到有問題的那行程式碼, 把他獨立出來之後變成下面這樣: ===================================== #include <stdlib.h> #include <stdio.h> #include <iostream.h> #include <fstream.h> #include <string.h> #include <ctype.h> #include <math.h> #include <time.h> #include <cstdlib> #include <ctime> #include <windows.h> using namespace std; void Test() { int R[15][5][100][101]; } main() { Test(); system("PAUSE"); return 0; } ======================================== 原本想說會不會是陣列設的太大, 但在無聊亂測的結果卻發現, 把這行移到上面的話就可以正常執行, 就像下面這樣: ======================================== #include <stdlib.h> #include <stdio.h> #include <iostream.h> #include <fstream.h> #include <string.h> #include <ctype.h> #include <math.h> #include <time.h> #include <cstdlib> #include <ctime> #include <windows.h> using namespace std; int R[15][5][100][101]; void Test() { } main() { Test(); system("PAUSE"); return 0; } ======================================== 由於我進行的演算法非常有必要用到這個陣列, 而且其他部份也都完成了, 不知是否能在盡量不影響結構的情況下解決這個問題? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.75.38

06/13 17:53, , 1F
目的只是要跑演算法,就用你後來改的方式就好吧
06/13 17:53, 1F

06/13 17:55, , 2F
但因為我有10隻副程式,每隻副程式都會用到大小不同的
06/13 17:55, 2F

06/13 17:56, , 3F
這個陣列,把他丟上去會影響到其他的,所以...
06/13 17:56, 3F

06/13 18:02, , 4F
用 動態陣列 應該就沒問題了
06/13 18:02, 4F

06/13 18:02, , 5F
同名嗎?還有一招。新開個.cpp放這個 int R[15][5][100][101];
06/13 18:02, 5F

06/13 18:03, , 6F
在你要用到R的函數裡面,加上 extern int R[15][5][100][101];
06/13 18:03, 6F

06/13 18:03, , 7F
這樣子在該函數裡的R就能對應到這個R陣列
06/13 18:03, 7F

06/13 18:07, , 8F
應該說,假設你某個副程式已經有 int R[2][2][2][2]; 可是你
06/13 18:07, 8F

06/13 18:08, , 9F
有連續幾行程式碼要用到這很大的R,你可以用{}把這些程式碼包
06/13 18:08, 9F

06/13 18:08, , 10F
起來,裡面最開頭加上 extern int R[15][5][100][101]; 即可
06/13 18:08, 10F

06/13 18:09, , 11F
動態陣列有考慮,但因為不熟加上我這是有4千多行垃圾的
06/13 18:09, 11F

06/13 18:10, , 12F
龐大怪物,所以暫時放在最後的備案..
06/13 18:10, 12F

06/13 18:11, , 13F
z大說的方式沒用過耶,來試著用用看!
06/13 18:11, 13F

06/13 22:17, , 14F
說個題外話,這個問題是因為local variable會配置在
06/13 22:17, 14F

06/13 22:18, , 15F
stack裡面,而預設的stack大小不夠你用所以有錯誤。
06/13 22:18, 15F

06/13 22:20, , 16F
global variable是預先配置的空間所以沒問題。
06/13 22:20, 16F

06/13 22:20, , 17F
更改stack的大小 我想應該可以解決這個問題。
06/13 22:20, 17F
文章代碼(AID): #1ACtQCgZ (C_and_CPP)
文章代碼(AID): #1ACtQCgZ (C_and_CPP)