我有两个结构
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;
问题:对吗?
答案 0 :(得分:1)
问题:对吗?
是,但您可能想要:
struct point_set *setOfPoints = (struct point_set *)malloc(sizeof(struct points_set));
相反。换句话说,这里不要乘以size
,因为您只想分配一个struct point_set
,而不是很多。