如何分配由固定大小的浮点数组成的数组? 我试过这个:
float **sub_uvs = malloc(sizeof(float [2]) * size * size);
/* Seg. fault */
sub_uvs[0][0] = 0.3;
sub_uvs[0][1] = 0.4;
答案 0 :(得分:2)
您必须为第二个阵列执行另一个单独的分配,可能是使用另一个MEM_allocN
调用。您还必须使用平台提供的任何解除分配功能单独释放此内存。
内存表示将完全不同,因此即使在某些地方语法上更方便,也可能难以在任何地方使用它。
答案 1 :(得分:2)
可变大小的多维数组仍然很棘手。几个选项:
使用指向数组的指针数组。使用一个malloc
作为指针数组,然后遍历malloc
以生成每个行数组。但是,这是一个完全不同的数据结构。
查找提供内存管理和多维索引方法的类。也许Blender有一个?
使用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]);