[請問]mem alloc的問題 |
尚未結案
|
yungfan
一般會員 發表:25 回覆:13 積分:7 註冊:2003-12-29 發送簡訊給我 |
|
anpino
版主 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
引言: 請問一下各位大大 當宣告如下:您好, typedef short PCM[2][18][32]; 這一行是指定義一個short的陣列 -- PCM。詳見MSDN中對typedef的解釋。 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/_clang_Typedef_Declarations.asp PCM *pcm_sample; 這一行是宣告一個PCM陣列的指標pcm_sample。 pcm_sample = (PCM *) alloc((long) sizeof(PCM)); 這一行是向系統要一個PCM空間並指給pcm_sample。 設一個陣列與alloc一個區塊都是向系統要一個連續的記憶體空間。 ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D -------------------------------typedef short PCM[2][18][32]; PCM *pcm_sample; pcm_sample = (PCM *) alloc((long) sizeof(PCM));這三行我有點模糊,能不能詳細的指導一下。 另外有個疑問,就是設一個陣列與alloc一個區塊有什麼不同呢?? 謝謝啦^^ |
johnjohn
一般會員 發表:6 回覆:59 積分:13 註冊:2004-04-20 發送簡訊給我 |
宣告一個陣列與malloc最大的差別是在於: ●malloc是向系統於堆積記憶體(Heap)要一塊你所指定的大小的記憶體
●宣告一個陣列是向系統於堆疊記憶體(Stack)要一塊你所指定的陣列大小的記憶體 而由於stack中的資料是會不受到保護的,因此當你宣告一個陣列時,
e.g.,int a[3]; 若你想這樣做: a[3]=1;
你的compilier並不會警告你,然而,原先存在於記憶體位置(a+3)中的資料即會被覆蓋掉.試想,若你覆蓋掉的資料是一個指標變數,那麼.... >>
|
johnny149
一般會員 發表:0 回覆:13 積分:2 註冊:2004-03-15 發送簡訊給我 |
引言: 請問一下各位大大 當宣告如下: typedef short PCM[2][18][32]; PCM *pcm_sample; pcm_sample = (PCM *) alloc((long) sizeof(PCM)); 這三行我有點模糊,能不能詳細的指導一下。 另外有個疑問,就是設一個陣列與alloc一個區塊有什麼不同呢?? 謝謝啦^^typedef short PCM[2][18][32]; // 定義一個PCM型態,每一個單位是由一個三維短整數組成 // 每一個單位大小為 2*18*32 個短整數 PCM *pcm_sample; //宣告一個PCM型態的指標pcm_sample。 pcm_sample = (PCM *) alloc((long) sizeof(PCM)); // 是向系統要一塊PCM大小的空間並轉為 PCM 型態 給pcm_sample指到。 陣列空間是跟程式一起載入,alloc 是動態配置。 eg.1 char ss[32000]; eg.2 char *ss; ss = (char *) alloc( 32000 ); 這兩個例子ss可用空間都是32,000Bytes,但例一的.exe就是比較大(約大32K, Why? :D) |
yungfan
一般會員 發表:25 回覆:13 積分:7 註冊:2003-12-29 發送簡訊給我 |
|
johnny149
一般會員 發表:0 回覆:13 積分:2 註冊:2004-03-15 發送簡訊給我 |
引言:陣列空間是跟程式一起載入,alloc 是動態配置。 eg.1 char ss[32000]; eg.2 char *ss; ss = (char *) alloc( 32000 ); 這兩個例子ss可用空間都是32,000Bytes,但例一的.exe就是比較大(約大32K, Why? :D) 先謝謝你的解答啦…我現在觀念比較清楚了… 至於你的問題…我想就如你所說的…一個是跟著程式一起build出來的…一個是執行後才跟os要記憶体…所以會有大小的差別…不知道是不是這樣呢??正是如此,善用動態配置可以有效節省系統資源。不過指標的使用要小心, 這是要成為高手路上必經的痛。加油哦! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |