美文网首页
返回值为对象引用时的注意事项

返回值为对象引用时的注意事项

作者: xiaoliang1 | 来源:发表于2020-06-26 16:05 被阅读0次
MyException& test5() {

    MyException* p1 = new MyException(10);

    
    printf("p: %x\n", p1);
    return *p1;
}

void test6() {

    MyException p = test5();
    printf("p: %x\n", &p);
}

int main()
{
    test6();
    return EXIT_SUCCESS;
}

代码如上,当返回值为应用时,这中写法会发生对象copy构造,从而发生内存泄漏


__thiscall MyException::MyException(int)
p: a7f4c0
__thiscall MyException::MyException(const class MyException &)
p: 39fbbc
__thiscall MyException::~MyException(void)

C:\Users\admin\source\repos\异常捕获\Debug\异常捕获.exe (进程 10316)已退出,代码
为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自
动关闭控制台”。
按任意键关闭此窗口. . .

对象在堆区时,千万不要返回引用

相关文章

网友评论

      本文标题:返回值为对象引用时的注意事项

      本文链接:https://www.haomeiwen.com/subject/slrufktx.html