看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《k770618x (tim845487)》之銘言: : 標題: [問題] 程式可用的記憶體容量 : 時間: Mon Mar 14 21:16:07 2011 : : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : Dev C++ 用這不太好啊,很多lib與他整合上會有問題 初學,windows就用 VC,linux/mac就用GCC吧 : : 問題(Question): : 老師說我的程式寫錯 不可能存不到幾十萬個double : 經過測試 我連下面這麼少的資料:270000個double都會當掉 : 最多存到25萬個double左右 這是怎麼回事? : : 餵入的資料(Input): : #include <cstdlib> : #include <iostream> : 初學者不要用C++頭檔案/語法, 改用 stdlib.h 與 stdio.h吧 : int main() 好習慣 改成 int main(void) : { : : double M[270000]; 改成 double *M; int n; n = 270000; M = (double*)malloc(n*sizeof(double)); 為什麼要這樣寫不重要,先背起來就對了。 久了你就知道為何是如此。 : int i; : : for(i=0;i<270000;i++) : {M[i]=1;} 習慣不好 改成: for(i = 0; i< n; i++) { M[i] = 1; }/*for i*/ : : for(i=0;i<100;i++) : {printf("%f",M[i]);} : 同上。 : system("PAUSE"); 多個free(M); M = NULL; /*可不寫 但養成好習慣吧*/ : return 0; : } : : 預期的正確結果(Expected Output): : 印出很多個1 : : 錯誤結果(Wrong Output): : 一跑就當掉 用除錯/監看的"執行到游標位置" : 顯示問題是:segmentation fault : : 程式碼(Code):(請善用置底文網頁, 記得排版) : : : 補充說明(Supplement): : : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 140.112.101.199 : → tropical72:用 malloc 方式配置應可過 03/14 21:43 : 推 lsc36:直接放在全域比較簡單吧 03/14 21:53 : → LoveBeef: 112 「老師說」。 您是資工系的學生? 03/14 21:58 : → LoveBeef:我測試這篇的程式,(我)不會當掉耶.不會顯示segmentation 03/14 21:59 : → LoveBeef:fault。 (我)很順利的「跑」。印出很多個1.00...... 03/14 22:02 原po是物理系的 不要鞭這樣大力啊。 Dec C的堆棧只有2MB ?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.158.204
ducksteven:Mac 也有好用的IDE 叫 Xcode 03/16 13:49
DrStein:xcode也是gcc 03/16 14:12
littleshan:為什麼不要用 C++ header? 寫 C++ 就用 C++ header 呀 03/16 14:29
VictorTom:大概是code看起來像在寫C語言而非C++吧XD 03/16 14:50
loveme00835:@_@ 為什麼要用舊版的勒 03/16 18:59
ducksteven:嘛,我想說原po舉IDE為例,就提了個IDE 科科 03/17 00:32
peacedove:xcode不是用llvm喔?? 03/17 01:37
danielguo:xcode 預設 GCC 4.2, 可選用 LLVM/GCC 和 LLVM/Clang 03/17 06:06
danielguo:code 是有很多問題沒錯, 不過是 C++ 編譯就用<cxx>較好 03/17 06:07