作者:
wtchen (沒有存在感的人)
2015-06-09 20:42:17問題(Question):
精華區3-3-3有提供幾種動態宣告多維陣列的方式
我自己google找到用malloc宣告的方式:
http://www.geeksforgeeks.org/dynamically-allocate-2d-array-c/
不知道這樣用malloc能不能符合連續儲存的條件?
(連續儲存好像比較快?)
作者:
Feis (永遠睡不著 @@)
2015-06-09 20:56:00作者:
wtchen (沒有存在感的人)
2015-06-09 21:09:00看來精華區該多收些Feis的好文...
作者:
Feis (永遠睡不著 @@)
2015-06-09 21:11:00我回完才發現 3-3-3 就說一樣的事 @@
作者:
wtchen (沒有存在感的人)
2015-06-09 22:54:00用malloc宣告跟3-3-3效率會有差嗎?
作者:
Feis (永遠睡不著 @@)
2015-06-09 23:02:00為什麼你覺得有差?
作者:
wtchen (沒有存在感的人)
2015-06-09 23:05:00如果用gcc compile的話只支援malloc我看起來是沒差的
作者:
bibo9901 (function(){})()
2015-06-10 01:12:00你也可以一次malloc出所有需要的記憶體例如想要 int[n][m], 那總共需要 n*m*sizeof(int)+ n * sizeof(int*) 這麼多空間, 然後把前面 n 個 int*指到正確位址上假設 int **arr 是你要的陣列, char * p = malloc(...)那麼arr[i] = p + n*sizeof(int*) + i*m*sizeof(int)這樣既是你要的連續儲存,又只需要一次 free啊XD 就是你網址裡的第4種方法
作者:
bibo9901 (function(){})()
2015-06-10 01:32:00另外 new 和 malloc 最明顯的差異是 new 會自動呼叫trivial constructor, 理論上是會比 malloc 來得慢
作者:
LPH66 (-6.2598534e+18f)
2015-06-10 02:04:00這裡是 new 陣列應該沒有差...
作者:
wtchen (沒有存在感的人)
2015-06-10 22:01:00因為之後想玩底層,所以希望能多了解最有效率的方法精華區3-3-3用的new不合我需求,所以才想用malloc感謝各位解說
你要快就是用placement new做memory pool在C++裡面糾結new或者malloc講真的沒啥意義....
作者:
BlazarArc (Midnight Sun)
2015-06-24 23:46:00同意樓上