You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过单条语句获取指向默认struct结构体对象的指针

单条语句实现的几种可选方案

你可以根据你的使用场景选择对应实现:

  • 堆内存分配场景(推荐C++11及以上用智能指针)
    如果不需要保留原对象变量,只需要指针,优先选择智能指针自动管理内存,避免泄漏:

    // C++14及以上可用std::make_unique
    auto pointerToDefaultStructObject = std::make_unique<SomeStruct>();
    // C++11及以上可用std::make_shared
    auto pointerToDefaultStructObject = std::make_shared<SomeStruct>();
    

    如果你需要手动管理内存,也可以直接用new:

    auto pointerToDefaultStructObject = new SomeStruct{};
    // 后续使用完毕需手动调用 delete pointerToDefaultStructObject 释放
    
  • 栈内存场景,同时需要保留对象和指针
    C++17及以上版本可以用结构化绑定一次性定义两个变量:

    auto [defaultStructObject, pointerToDefaultStructObject] = []{
        SomeStruct obj{};
        return std::make_tuple(obj, &obj);
    }();
    

    这种方式得到的对象和指针生命周期与当前作用域一致,无内存泄漏风险,也不会出现临时对象悬垂问题。

  • 短生命周期临时使用场景
    如果你只需要在当前语句内使用指针,不需要后续访问,可以直接对临时对象取地址:

    auto pointerToDefaultStructObject = &(SomeStruct{});
    

    注意:该方案得到的指针指向的临时对象会在当前语句结束后销毁,后续访问会触发未定义行为,非必要不推荐使用。

内容的提问来源于stack exchange,提问作者Manojkumar Khotele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 07:09:03