[問題] 記憶體區段錯誤..

看板C_and_CPP (C/C++)作者 (adios)時間16年前 (2009/12/06 23:16), 編輯推噓3(306)
留言9則, 7人參與, 最新討論串1/1
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 #define N 1000000 5 int main(void) 6 { 7 long long i;long long total=0; 8 long long data[N]; 9 for(i=0;i<N;i++) 10 data[i]=i+1; 11 12 for(i=0;i<N;i++) 13 total+=data[i]; 14 printf("total=%lld\n",total); 15 return 0; 16 } 正在測試各種運算的速度比較 如上 是個很簡單的程式碼 但是N如果再加一個0以上 就會出現"記憶區段錯誤"的訊息.. 裡面參數從int改成long和long long還是一樣 編譯可以過 但執行就會出現上面的錯誤 請問是哪裡的問題呢?? -- 5L36f6d6I5207573K657273206f6E62066Y697265O666f78206172U65207375636b2e -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.215.245

12/06 23:20, , 1F
stack放不下那麼大的陣列 要放heap
12/06 23:20, 1F

12/06 23:24, , 2F
哇~還沒看到heap那邊..看來這得等以後再做..
12/06 23:24, 2F

12/06 23:54, , 3F
你用malloc就可以啦
12/06 23:54, 3F

12/06 23:59, , 4F
1.設成static 2.用全域變數
12/06 23:59, 4F

12/07 06:51, , 5F
如果是VC 可以改STACK SIZE 上網查一下 我有改過 @"@
12/07 06:51, 5F

12/07 09:04, , 6F
嗯,win32 預設 stack 1mb 所以放不下, 可以改
12/07 09:04, 6F

12/07 09:31, , 7F
是在linux底下..
12/07 09:31, 7F

12/08 00:20, , 8F
沒差多少 1.5MB...
12/08 00:20, 8F

12/08 00:21, , 9F
這東西到global的話,編譯會花比較多時間(fs alloc 8MB)。
12/08 00:21, 9F
文章代碼(AID): #1B6yhCkl (C_and_CPP)
文章代碼(AID): #1B6yhCkl (C_and_CPP)