gpt4 book ai didi

c - 为什么除非复制,否则指向 malloc 区域的指针会失败?

转载 作者:行者123 更新时间:2023-11-30 21:36:09 24 4
gpt4 key购买 nike

我有一个指向结构的指针。我调用一个例程来确定是否需要此结构并使用 malloc 为其分配空间,返回指向该区域的指针,如果未使用则返回零。

struct node *node_p;
node_p = need_this();

这有效,我可以正确访问该结构的所有元素。结构节点的元素之一是 *next,它指向下一个节点结构和一个指向字符串的指针,但它返回一个指向该例程中甚至不存在的字符串的指针。

node_p=find_string(node_p->next,"string");

但是,这确实会在结构中返回指向正确字符串的指针。

struct node *node_p, *node_copy;
node_copy=find_string(node_p->next,"string");

唯一的区别是使用第二个指针而不是原始指针。我在这里做错了什么,还是必须深入到被调用的函数中?归咎于被调用函数的问题是我在多个地方使用它几个月没有问题,但是其他调用只查找字符串而从不转到“下一个”。

EDIT: Further debugging has shown the problem actually lies with the pointer being passed to find_string and not the returned pointer. That changes the question and the problem so I need to open another question.

最佳答案

在此片段中:

struct node *node_p, *node_copy;
node_copy=find_string(node_p->next,"string");

node_p尚未初始化时(未指向合法分配的内存块),您取消引用它。这是未定义的行为。您应该首先将node_p设置为合法分配的适当大小的内存块。

关于c - 为什么除非复制,否则指向 malloc 区域的指针会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3245993/

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