[问题] 动态宣告2维阵列的方式(看过精华区3-3-3)

楼主: 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
C++ 可以吗? #1IvruEtP
楼主: 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种方法
作者: arthur104 (arthur)   2015-06-10 01:22:00
推楼上,pointer用的好,没烦恼
作者: 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感谢各位解说
作者: Killercat (杀人猫™)   2015-06-12 16:26:00
你要快就是用placement new做memory pool在C++里面纠结new或者malloc讲真的没啥意义....
作者: BlazarArc (Midnight Sun)   2015-06-24 23:46:00
同意楼上

Links booklink

Contact Us: admin [ a t ] ucptt.com