Re: [問題] 龐大的二維矩陣建立
※ 引述《CindyLinz (Cindy Wang)》之銘言:
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 210.242.246.249
: → james732:第二個方法的記憶體好像比較接近 int array[15000][40]; 06/25 22:53
: 推 VictorTom:小弟我每次要寫第二種方法那種pointer的宣告都要試誤個 06/25 23:04
: → VictorTom:半天....Orz 06/25 23:04
: → james732:其實第二個我也沒用過....XDD 06/25 23:05
: 推 ledia:!! 06/25 23:10
: → loveme00835:注意(2)的最低維一定要是個正整數常數, 這兩個不等價 06/25 23:43
: → loveme00835:應該說除了最高維以外都要 06/25 23:49
: 推 somi:問 要怎麼把vim的syntax coloring貼到bbs上啊 06/26 01:31
: → loveme00835:自己打色碼 06/26 01:32
: → CindyLinz:pietty 的「貼上指定格式」 06/26 13:14
: → angleevil:用第一個吧!總覺得第二個散發未定義的氣息... 06/26 14:15
: 推 purpose:http://msdn.microsoft.com/en-us/library/kewsb8ba.aspx 06/26 14:21
: → purpose:缺點就是板主妹說得那樣,如果要 new 出一個多維陣列 06/26 14:22
: → purpose:那麼其他維度要受限制,不能用成變數,在 Runtime 才去決 06/26 14:23
: → purpose:定。反之,第一種方法可在 Runtime 決定 06/26 14:23
: → angleevil:我剛剛看了purpose的連結,它說第一維的空間可以為0 06/26 14:37
: → angleevil:~"~這樣設計的邏輯在? 06/26 14:37
它說明寫說可以得到一個 unique pointer :p
大概可以用來當作 in-process 的一種 uuid 用吧 XD
大小為 0 的陣列, 如果不是用在 allocate 記憶體的話,
以前修資料庫系統的時候, 我在作業的範例程式裡面看到類似這樣的用法:
#include <stdio.h>
typedef struct {
int heap[1024];
int stack[0];
} data_t;
int main(){
data_t data;
int i;
for(i=0; i<1024; ++i)
data.heap[i] = i;
printf("%d\n", data.stack[-1]); /* 1023 */
printf("%d\n", data.stack[-10]); /* 1014 */
printf("%d\n", data.stack[-1000]); /* 24 */
printf("%d\n", data.stack[-1024]); /* 0 */
return 0;
}
也就是可以把 stack 當成一個 index 方向倒過來的陣列用,
而且 stack 本身沒有額外佔空間.
(額外用一個 int* 的話會佔一個指標的空間)
: → firejox:我記得那是很神奇的東西...XD 06/26 14:45
: → firejox:其實還有一個是 int *array = new int[15000*40]; 06/26 14:52
: 推 purpose:第一維的大小為 0 大概是指標,不重要 06/26 16:16
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.242.246.249
推
06/26 17:16, , 1F
06/26 17:16, 1F
→
06/26 17:16, , 2F
06/26 17:16, 2F
→
06/26 21:46, , 3F
06/26 21:46, 3F
→
06/27 04:30, , 4F
06/27 04:30, 4F
推
06/27 10:20, , 5F
06/27 10:20, 5F
※ 編輯: CindyLinz 來自: 210.242.246.249 (09/10 13:18)
討論串 (同標題文章)