gpt4 book ai didi

c - 使用结构指针的内存分配问题

转载 作者:太空宇宙 更新时间:2023-11-04 06:24:57 25 4
gpt4 key购买 nike

所以,这是我的问题,我已经坚持了一段时间了。这是使用链接列表...我有两个这样声明的结构

typedef struct BankAccountList *BankAccountListP;

struct BankAccountList {
AccountNodeP head;
int count;
};

AccountNodeP newNode(char *, int, double);

struct AccountNode {
char *name;
int id;
double balance;
AccountNodeP next;
};

直到这个指针为止,它工作得很好,但是当我尝试分配内存时......

AccountNodeP acctNodePtr = (AccountNodeP) malloc(sizeof(AccountNodeP));

停止我的程序。这位于返回accountNodePtr.

函数:

AccountNodeP newNode(char *name, int id, double balance) {
AccountNodeP acctNodePtr = (AccountNodeP) malloc(sizeof(AccountNodeP));
fprintf(stderr, "\nERROR 4\n");

if (acctNodePtr == NULL) {
fprintf(stderr, "\nERROR 10\n");
}
acctNodePtr->next = NULL;
acctNodePtr->id = id;
acctNodePtr->balance = balance;
strcpy(acctNodePtr->name, name);
return acctNodePtr;
}

第一次和第二次调用此函数时它起作用但最后我的程序仍然没有正确结束,它收到错误并停止运行。但是,信息保存在结构中(我可以使用 fprintf(stderr) 来判断。)但是,我第三次调用它时,它出错并停止了我的程序AccountNodeP acctNodePtr = malloc... 语句。我也知道这一点是因为使用了 fprintf(stderr)。

你能看出我的代码有什么明显的错误吗?我不确定我能否指出问题所在。请帮助我理解,而不仅仅是给我答案,我需要确切地了解正在发生的事情。

注意:错误出在这个函数中,我的测试仪和 adt 文件在这个函数之外工作正常。没有必要向您提供我的其余代码,因为我确定错误出在某处。

最佳答案

如果您的 AccountNodeP 是指向您的结构的指针,则 sizeof(AccountNodeP) 将返回指针的大小而不是结构的大小。您可能想用 sizeof(struct AccountNode) 代替。

附言并且不要转换 malloc 的返回值!

关于c - 使用结构指针的内存分配问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28370234/

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