C26816返回shared_ptr.get()警告

发布于 2025-01-20 13:31:02 字数 390 浏览 0 评论 0原文

C26816读:“指针指向分配在堆栈上的内存”

vs vs vs vs viss viss this shared_ptr.get()的警告,但是我的印象是,返回的指针指向堆上的托管对象,因此有效为有效只要引用了智能指针?

我还没有遇到任何问题,但是我想确认我是否应该注意此警告,或者是视觉工作室的另一个怪癖。

示例:

int* test()
{
    auto a = std::make_shared<int>(5);
    someVector.push_back(a);
    return a.get(); // warning here
}

值得注意的是,当我对其进行测试时,它似乎不会发生在unique_ptr.get()上。

C26816 reads: "The pointer points to memory allocated on the stack"

VS gives this warning on returning of shared_ptr.get(), but I was under the impression that the returned pointer pointed to the managed object on the heap and thus is valid as long as the smart pointer is referenced?

I haven't yet encountered any issues with this yet, but I want to confirm whether or not I should heed this warning, or if it's another eccentricity of Visual Studio.

Example:

int* test()
{
    auto a = std::make_shared<int>(5);
    someVector.push_back(a);
    return a.get(); // warning here
}

Notably it doesn't appear to happen on unique_ptr.get() when I tested it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文