gpt4 book ai didi

c++ - 在多个线程/函数之间使用shared_ptr-IDS Peak API

转载 作者:行者123 更新时间:2023-12-02 10:37:55 27 4
gpt4 key购买 nike

我遇到2个函数(HTTPlib库的main和svr.Get(...))之间的share_ptr问题。

我使用以下方法声明了指针:

std::shared_ptr<peak::core::DataStream> dataStream;

我正在使用main初始化它:
dataStream = device->DataStreams().at(0)->OpenDataStream();

当我在另一个函数(HTTPLIB库的GET函数)上检索它时,地址似乎是正确的,但该值不是有人值守的:
EXCEPTION: Error-Code: 10 (PEAK_RETURN_CODE_INVALID_HANDLE) | Error-Description: dataStreamHandle is invalid!

指针似乎在函数之间被取消引用。
我哪里错了?有什么正确的方法来影响它并在另一个函数中对其进行检索?

最佳答案

由于所有权转移,指针引用的操作对象不再可用。根据CPP manual:

std::shared_ptr is a smart pointer that retains shared ownership of an object through a pointer. Several shared_ptr objects may own the same object. The object is destroyed and its memory deallocated when either of the following happens:

the last remaining shared_ptr owning the object is destroyed;the last remaining shared_ptr owning the object is assigned another pointer via operator= or reset().


因此,这不是库问题,而是分配错误。

关于c++ - 在多个线程/函数之间使用shared_ptr-IDS Peak API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59415034/

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