gpt4 book ai didi

将 void 指针转换为结构指针不会在结构内返回正确的指针

转载 作者:行者123 更新时间:2023-11-30 19:20:50 24 4
gpt4 key购买 nike

我有一个函数,允许我设置一些void *user_data,我用它来存储指向struct job_data的指针,定义为:

struct job_data {
int *i
struct *j;
}

它通过允许我通过调用将指针传递给 user_data 设置函数来实现此目的,因此如果我有 struct job_data job_info,我会设置它通过 set_user_data(&job_info),其中 *set_user_data* 接收 void * 作为参数。

但是,当我稍后取回指针并通过 struct job_data *job=user_data 进行转换时, (job.ijob. j)设置为与我转换为 void * 的原始 job_data 结构中不同的指针。这是为什么?我应该采取什么不同的措施来重新捕获原始的 ij 指针?

最佳答案

当您检索指针时,在堆栈上分配struct job_data job_info的范围很可能不再存在。

如果在您检索指针时作用域已结束,那么到那时内容很可能已被覆盖。

您可以通过确保只要必须访问指针即可作用域有效或在堆上分配结构(malloc 和系列)来解决此问题。

关于将 void 指针转换为结构指针不会在结构内返回正确的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21092250/

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