【发布时间】:2016-02-02 21:49:25
【问题描述】:
我想创建 5*5 2D 矩阵。我通常使用以下内存分配方式:
int **M = malloc(5 * sizeof(int *));
for (i = 0; i < 5; i++)
{
M[i] = malloc(5 * sizeof(int));
}
在阅读博客时,我还发现了另一种方法:
int **M = malloc(5 * sizeof(int*));
M[0] = malloc((5*5) * sizeof(int));
我的问题是:这两种方法有什么区别?哪个效率更高?
【问题讨论】:
-
第二个 sn-p 不完整,因为它使
M[1]到M[4]未初始化。 -
第一个更“高效”,因为它会做你真正想要的(为每个
M[i]分配5 个int值的空间)。第二个为M[0]的25 个int值分配空间,使M[1]到M[4]未初始化。您在哪个博客中找到了这个? -
区别在于第一个有效,第二个是bug。
标签: c