Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ std::unique_ptr ABI是否与原始指针兼容?_C++_C++11_Unique Ptr_Abi_Binary Compatibility - Fatal编程技术网

C++ std::unique_ptr ABI是否与原始指针兼容?

C++ std::unique_ptr ABI是否与原始指针兼容?,c++,c++11,unique-ptr,abi,binary-compatibility,C++,C++11,Unique Ptr,Abi,Binary Compatibility,我对std::unique_ptr的阅读让我确信,它与其他智能指针一起绝对是项目中内部指针的最佳选择,尤其是在之后,但我还不确定在接口上做什么。我不完全了解C++中的各种ABI是如何工作的,所以如果这是一个愚蠢的问题,请大家耐心等待,但是可以使用或返回指针、类、结构的指针成员,等等。不需要重新编译?C代码与C++接口交互使用UNIQUQUEPTR没有并发症吗?< / P> < P> AFAIK,不能保证SsieFoopyQuypTr= = siZeFoT*,所以没有No./P> 但是,即使大小相

我对std::unique_ptr的阅读让我确信,它与其他智能指针一起绝对是项目中内部指针的最佳选择,尤其是在之后,但我还不确定在接口上做什么。我不完全了解C++中的各种ABI是如何工作的,所以如果这是一个愚蠢的问题,请大家耐心等待,但是可以使用或返回指针、类、结构的指针成员,等等。不需要重新编译?C代码与C++接口交互使用UNIQUQUEPTR没有并发症吗?< / P> < P> AFAIK,不能保证SsieFoopyQuypTr= = siZeFoT*,所以没有No./P>
但是,即使大小相同,也不能保证任意ABI将通过与值参数相同的机制传递指针参数。

AFAIK,也不能保证sizeofunique_ptr==sizeofT*,因此没有

但即使大小相同,也不能保证任意ABI将通过与值参数相同的机制传递指针参数。

除非您将内存所有权转移给函数,否则它不必接受唯一的\u ptr。只需停止使用DeleteAnywhere,并使用具有适当所有权语义的智能指针。接受裸指针的函数不声明该指针的所有权,也不应在函数的作用域之外访问它,即:将其存储在全局或其他内容中。除非您将内存的所有权转移给函数,否则它不需要获取唯一的\u ptr。只需停止使用DeleteAnywhere,并使用具有适当所有权语义的智能指针。接受裸指针的函数不声明该指针的所有权,也不应在函数的作用域之外访问它,即:将其存储在全局或其他内容中。