作者DrStein (啤酒肚)
看板C_and_CPP
標題Re: [問題] 程式可用的記憶體容量
時間Wed Mar 16 12:52:33 2011
※ 引述《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