gpt4 book ai didi

c++ - 在 C++ 中使用从 C 库返回的指针

转载 作者:太空狗 更新时间:2023-10-29 20:01:27 26 4
gpt4 key购买 nike

我正在使用用 C 开发的库(特别是:HTK)。我对源代码做了一些修改,并试图从一个函数中获取一个指针(指向链表的开头)。不要讲太多细节;假设我有一个名为 OutType 的结构。在我的 C++ 代码中,我声明:OutType* 输出;并将其传递给某个函数 LName(....., OutType* Out)现在,在 C 库中,LName 接受参数 Out,并调用名为 SaveH 的函数,其中 Out 是返回值 (Out=SaveH(...)),在 SaveH 中,Out 是 malloc'ed作为 OutType returnOut=(OutType*)malloc(1,sizeof(OutType));据我所知,Out 是完美的 malloc'ed,在 LName 函数中我可以获得分配的内存区域的地址。但是当我返回我的 C++ 代码时,我在其中调用 LName 并将 Out 作为参数传递,该参数的地址始终为 0。如果我保持一切不变,但只是更改 SaveH,使 Out 不是返回值,而是 SaveH(....,OutType* Out) 的参数,并在传递之前在 C++ 代码中分配该值一切都好。正常吗?在 C++ 代码中使用 C 库中分配的指针有问题吗?谢谢

最佳答案

您正在传递指针的拷贝,这就是为什么在您的 C++ 代码中看不到 C 库中的更改。

因为您已经在修改库,所以您应该让该 C 函数接受一个指向一个指针的指针。

LName(....., OutType** Out)

*Out=SaveH(...);

现在您将传递 C++ 指针的地址,因此您的 C 代码将修改相同的原始指针。

关于c++ - 在 C++ 中使用从 C 库返回的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/933003/

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