看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《rdfs (learning)》之銘言: : 推 ianfang:memset 06/02 21:06 : 推 ianfang:高維一樣 06/02 21:16 : 推 hichcock:ZeroMemory 06/02 21:27 : 推 VictorTom:如果是malloc/new回來的多維陣列可能要跑迴圈memset 06/02 21:33 : → VictorTom:因為不能保證當初跑迴圈要的mem一定會連續@_@" 06/02 21:34 : → VictorTom:所以常見的策略是只要一維array, 再用pointer指成多維. 06/02 21:35 : → VictorTom:這樣搭memset或其他mem函數就會比較有效率:) 06/02 21:35 : 推 QQ29:請問樓上有沒有example阿@@ 看不是很了解又很想知道是什麼 06/02 21:53 Example??大概就像下面這個樣子吧.... int w = 128, h = 128; // 只是舉個例, 就假裝I/O後要這樣的吧.... int *raw = new int[w*h]; int **array2D = new int*[h]; for(int i=0; i<h; ++i) array2D[i] = raw + i*w; 所以當你需要空間關係比如做covolution運算時你有array2D[i][j]方便用.... 當只要sequential處理像調亮度/inverse等的時候用loop直接對raw[]處理.... 包含想使用memset, memcpy等functions時也不用擔心memory連續性的問題.... 主要是以前做影像處理, 一些功能直接對raw[]做理論上可以gain一點效能.... 然後對array2D[][]應該也沒有衝擊; 當然和static alloc可能不能比就是@_@" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.41.192.14