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

C++中能否用一行代码创建栈分配的类实例及指向它的指针?

C++栈分配能否一行拿到类实例指针?

直接说结论:没有安全的一行语法能同时完成「创建栈上类实例 + 获取它的有效指针」。

你现在写的两行代码是标准且安全的操作:

#include <iostream>

class Base {};

int main()
{
    Base base;
    Base* ptr = &base; // 栈对象的指针,生命周期和base一致,安全

    return 0;
}

网上能搜到的所谓「一行写法」基本都是坑,比如:

auto* ptr = &Base{};

这里的Base{}是临时栈对象,它的生命周期只在这一行表达式里,语句结束后对象就被销毁了,ptr直接变成悬空指针,后续用它会触发各种不可预测的错误,绝对不能用。

另外给从Python转来的你提个醒:C的栈对象是自动销毁的(离开所在的大括号就没了),堆对象(new出来的)才需要手动释放。之所以没设计栈实例+指针的一行语法,就是为了防止开发者误碰悬空指针的坑,毕竟C没有Python那种自动垃圾回收机制,内存全靠自己管。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:10:28