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

pau*_*ons 3 c++

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

Dre*_*ann 7

您正在传递指针的副本,这就是在C++代码中看不到C库中的更改的原因.

由于您已经在修改库,因此您应该让C函数获取指向指针的指针.

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

*Out=SaveH(...);
Run Code Online (Sandbox Code Playgroud)

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