記憶體需求 |
答題得分者是:RaynorPao
|
newbie
初階會員 發表:81 回覆:45 積分:25 註冊:2002-11-28 發送簡訊給我 |
#define X 256
#define Y 20
#define Z 2 TYPE_A *frmTest0[X][Y][Z];
TYPE_A *frmTest1[X][Y][Z];
TYPE_A *frmTest2[X][Y][Z];
TYPE_A *frmTest3[X][Y][Z];
TYPE_A *frmTest4[X][Y][Z];
TYPE_A *frmTest5[X][Y][Z];
TYPE_A *frmTest6[X][Y][Z];
TYPE_A *frmTest7[X][Y][Z];
TYPE_A *frmTest8[X][Y][Z];
TYPE_A *frmTest9[X][Y][Z]; 請問大家因為程式的需要我必須先宣告不同 Form 的 Pointer
所以每個 Pointer 佔4個 bytes...
4x256x20x2=40960; 也只有 40K bytes 啊... 可是..程式可以 Compile Okay, 但是執行一開始就會 Hand 住... 可是很奇怪.... 我將 X 改成 255 就 Okay 了...
那就算不是用指標, 直接宣告記憶體..如下..
假設 假設sizeof (TYPE_A) 為 300 個 bytes,
TYPE_A frmTest10[X][Y][Z]; 也只有 TYPE_AxXxYxZ=300x256x20x2=3072K bytes...=3M 這樣在 Windows 下應該也不是問題啊. 大家有什麼建議嗎??
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 大家有什麼建議嗎??newbie 你好: 我做了以下的實驗~~並沒有你說的情形 不知道你的 > < class="code"> void __fastcall TForm1::Button1Click(TObject *Sender) { typedef struct _TYPE_A { char szType[300]; } TYPE_A; #define X 256 #define Y 20 #define Z 2 TDateTime *dtStart=new TDateTime; TDateTime *dtEnd=new TDateTime; Label1->Caption=dtStart->CurrentDateTime().TimeString(); TYPE_A *frmTest0[X][Y][Z]; TYPE_A *frmTest1[X][Y][Z]; TYPE_A *frmTest2[X][Y][Z]; TYPE_A *frmTest3[X][Y][Z]; TYPE_A *frmTest4[X][Y][Z]; TYPE_A *frmTest5[X][Y][Z]; TYPE_A *frmTest6[X][Y][Z]; TYPE_A *frmTest7[X][Y][Z]; TYPE_A *frmTest8[X][Y][Z]; TYPE_A *frmTest9[X][Y][Z]; Label2->Caption=dtEnd->CurrentDateTime().TimeString(); delete dtStart; delete dtEnd; } 備註: (1)因為不知道你的 TYPE_A 的結構,先用 300 bytes 充數 (>> --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
newbie
初階會員 發表:81 回覆:45 積分:25 註冊:2002-11-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |