作者sicao (adios)
看板C_and_CPP
標題[問題] 記憶體區段錯誤..
時間Sun Dec 6 23:16:25 2009
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
1F:→ raincole:stack放不下那麼大的陣列 要放heap 12/06 23:20
2F:→ sicao:哇~還沒看到heap那邊..看來這得等以後再做.. 12/06 23:24
3F:推 cobrasgo:你用malloc就可以啦 12/06 23:54
4F:推 chchwy:1.設成static 2.用全域變數 12/06 23:59
5F:推 Gway:如果是VC 可以改STACK SIZE 上網查一下 我有改過 @"@ 12/07 06:51
6F:→ yoco315:嗯,win32 預設 stack 1mb 所以放不下, 可以改 12/07 09:04
7F:→ sicao:是在linux底下.. 12/07 09:31
8F:→ sunneo:沒差多少 1.5MB... 12/08 00:20
9F:→ sunneo:這東西到global的話,編譯會花比較多時間(fs alloc 8MB)。 12/08 00:21