weixin_46170929 2024-02-01 10:30 采纳率: 0%
浏览 2

线程对象必须用new吗?

同标题。线程直接定义对象和new一个对象,有什么差别?如
CThread thread;
CThread *thread; thread=new CThread

  • 写回答

3条回答 默认 最新

  • 专家-郭老师 Java领域新星创作者 2024-02-01 10:31
    关注

    参考通义千问和郭老师的小迷弟雅思莫了-编写提供,主要是为了帮助您快速解决问题,如下回答,您可以参考下,如有问题,评论区留言。

    在C++中,有两种方式可以创建对象:栈对象和堆对象。 当你这样使用时:

    CThread thread;
    
    

    你创建了一个栈对象。当出了声明对象的那个作用域(比如代码块或者函数退出),对象就会自动销毁。
    当你这样使用时:

    CThread *thread;
    thread = new CThread;
    
    
    

    你创建了一个堆对象。这种对象的生命周期直到你调用delete来销毁它,否则它会一直存在,即使出了声明对象的那个作用域。
    关于是否必须使用new来创建线程对象,取决于你的需求。如果你确保线程在函数或作用域结束时可以安全的销毁,那么可以不使用new。如果你想要线程在函数或作用域结束后继续运行,那么你应该使用new创建堆对象。记住,不需要的堆对象必须手动删除以避免内存泄漏,如:
    delete thread;

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 2月1日

悬赏问题

  • ¥300 寻抓云闪付tn组成网页付款链接
  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题