gpt4 book ai didi

复制到 C 中的 Null 位置并传递无效数据时崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 07:30:33 26 4
gpt4 key购买 nike

<分区>

我有以下结构:

struct PList{
Person value;
PList* next;
}

struct Person{
char name[100];
PersonID ID;
float amountOwed;
}

struct PersonID{
int number;
char letter;
}

在主要方法中:

Person n;
// n is inputted from the user
addPersonToList(&n, &customers); //customers is a PList

这是 addPersonToList 的代码:

void addPersonToList(Person* p, PList* pdb) {
PList* db;
db = pdb;
while (db->next != NULL ) {
db = db->next;
}
PList a;
a = createNewPList(); // this simply assigns next to NULL and value to an empty Person
a.value = *p;
memcpy(db->next,&a,sizeof(PList)+sizeof(Person)+sizeof(PersonID));
}

这里是createNewPList

PList createNewPList() {
PList a;
a.next = NULL;
a.value = constructPerson("", constructPersonID(' ', 0), 0);
return a;
}

问题 1未解决当调用 addPersonToList 方法时,除了 p->Id.number 之外,Person 中的所有值都被正确传递。这完全混淆了方法调用之前和方法调用之后。

问题 2 已解决我也尝试了 db->next = a; 而不是 memcpy以及手动分配所有值。但是在那一行程序崩溃了,我假设是因为 db->next 当前为 NULL

至于错误,没有显示错误。程序直接崩溃了。

感谢任何解决方案

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