gpt4 book ai didi

c - 如何指向一个对象而不在删除时影响它?

转载 作者:行者123 更新时间:2023-11-30 17:29:42 25 4
gpt4 key购买 nike

struct object
{
char* whatever;
}
struct other_object
{
object** points;
int number;
}

void add_to_points(other_object* passer, const struct object* object_ptr)
{
passer->points[passer->number] = object_ptr; //leads to warning
number++;
}

void delete_memory(other_object* passer)
{
int i;
for(i = 0; i < passer->numbers; i++){
free(passer->points[i]);
}
}

struct object* new_object = malloc(sizeof(object));
struct other_object* new_object_2 = malloc(sizeof(other_object));
new_object_2->points = malloc(3*sizeof(object));

add_to_points(new_object_2, new_object);
delete_memory(new_object_2);

所以通过上面的代码,看起来delete_memory实际上是在释放对象本身。我知道这可能与我的 add_to_points 函数有关,但我不清楚如何更改它以便“点”仅指向对象,但是如果我们删除点的成员(例如点[2])或者整个物体在一起,物体本身并没有被破坏。

最佳答案

您必须使用 object* 而不是 object 调用 malloc 来获取 new_object_2->points。您似乎想要获得指向对象的指针数组,而不是像您那样获得对象数组。

替换

new_object_2->points = malloc(3*sizeof(object));

new_object_2->points = malloc(3*sizeof(object*));

关于c - 如何指向一个对象而不在删除时影响它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25543437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com