在C中已分配的内存中的内存分配

时间:2018-10-13 08:21:59

标签: c

我有两个结构

struct point {
     double x;
     double y;   
};

struct points_set {
      int num_of_points;
      struct point *points; //an array of points sets 
}

我需要为结构点集实现内存分配。 (即实现功能struct point_set *alloc_points(struct point p_arr[], int size);

正如我所看到的,我们需要分配两次内存,即为point_set以及结构内部的点数组。

首先,我们为应该位于points_set之内的数组分配内存,即

struct point *arr_points = (struct point *)malloc(size * sizeof(point));

然后我们为整个结构分配内存

struct point_set *setOfPoints = (struct point_set *)malloc(size * sizeof(struct points_set));

最后,我们将指针从“ setOfPoints”指向“点”

setOfPoints->points = arr_points; 

问题:对吗?

1 个答案:

答案 0 :(得分:1)

  

问题:对吗?

是,但您可能想要:

struct point_set *setOfPoints = (struct point_set *)malloc(sizeof(struct points_set));

相反。换句话说,这里不要乘以size,因为您只想分配一个struct point_set,而不是很多。