gpt4 book ai didi

c - 声明临时结构作为参数传递——结构被重写。如何在新的内存位置声明该结构?

转载 作者:行者123 更新时间:2023-11-30 15:13:50 26 4
gpt4 key购买 nike

我试图在此循环的每次迭代期间初始化一个新结构以传递给函数;问题是相同的结构不断被重写或重用(内存地址相同)。如何声明一个不会被覆盖的新结构,以便我可以将指针传递给另一个函数?

while(dirs[i] != NULL){
thread_arg narg;

最佳答案

如果您希望数据在 while 循环的迭代之外具有持久性,同时其他迭代继续,那么您需要动态分配,如下所示:

while(dirs[i] != NULL){
thread_arg * nargp = (thread_arg *) malloc(sizeof(thread_arg));

您现在拥有一个指针而不是一个值,但这可能适合您的使用(即,您应该将其视为一个指针而不是一个值)。

当然,当您使用完数据后,您需要释放数据。你在哪里/如何做到这一点取决于你的用例 - 你提到你正在将数据传递给另一个函数,所以如果该函数使用它并且没有其他用途,那么一个解决方案是该函数可以释放它(free( nargp)) 返回之前。

关于c - 声明临时结构作为参数传递——结构被重写。如何在新的内存位置声明该结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34318383/

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