固定大小数组的动态数组

时间:2017-11-12 14:59:36

标签: c arrays pointers

如何分配由固定大小的浮点数组成的数组? 我试过这个:

float **sub_uvs = malloc(sizeof(float [2]) * size * size);
/* Seg. fault */
sub_uvs[0][0] = 0.3;
sub_uvs[0][1] = 0.4;

3 个答案:

答案 0 :(得分:2)

您必须为第二个阵列执行另一个单独的分配,可能是使用另一个MEM_allocN调用。您还必须使用平台提供的任何解除分配功能单独释放此内存。

内存表示将完全不同,因此即使在某些地方语法上更方便,也可能难以在任何地方使用它。

答案 1 :(得分:2)

可变大小的多维数组仍然很棘手。几个选项:

  1. 使用指向数组的指针数组。使用一个malloc作为指针数组,然后遍历malloc以生成每个行数组。但是,这是一个完全不同的数据结构。

  2. 查找提供内存管理和多维索引方法的类。也许Blender有一个?

  3. 使用Eigen或类似的完整数学库。

答案 2 :(得分:1)

或者您可以使用以下内容:)

float **a;
a = (float **)malloc(sizeof(float *) * size_row);

for(int i=0;i<size_row;i++)
{
    a[i] = (float *)malloc(sizeof(float) * size_col);
}
a[0][0] = 0.4;

printf("%f",a[0][0]);