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的进程中删除该副本,但这是由编译器自行决定的 – 您没有太多的控制权. 这种模式能够产生你害怕的问题,但只有当你返回一个指针或者引用本地对象的时候. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |