加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C返回本地对象

发布时间:2020-12-16 06:43:41 所属栏目:百科 来源:网络整理
导读:几位同事和我正在讨论当从C方法返回一个局部变量(在堆栈上分配)时会发生什么. 以下代码在单元测试中工作,但我相信这只是因为单元测试是幸运的,并且不尝试在obj使用的堆栈上重用内存. 这是否有效? static MyObject createMyObject() { MyObject obj; return
几位同事和我正在讨论当从C方法返回一个局部变量(在堆栈上分配)时会发生什么.

以下代码在单元测试中工作,但我相信这只是因为单元测试是幸运的,并且不尝试在obj使用的堆栈上重用内存.

这是否有效?

static MyObject createMyObject() {
    MyObject obj;
    return obj;
}

解决方法

会发生什么是复制构造函数被调用来创建本地对象的副本,这就是调用者收到的.

编译器可能会在一个称为copy elision的进程中删除该副本,但这是由编译器自行决定的 – 您没有太多的控制权.

这种模式能够产生你害怕的问题,但只有当你返回一个指针或者引用本地对象的时候.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读