当函数返回值是指针,而返回类型是c++中的引用时会发生什么

what happens when the function returning value is a pointer and the returning type is a reference in c++?

本文关键字:引用 什么 c++ 返回值 函数 指针 返回类型      更新时间:2023-10-16

伙计们,我刚收到老师的一个奖励问题!谢谢你帮我!!

下面的sub2不会导致运行时错误,但可能还有其他错误问题问题出在哪里?

在此处输入代码

int& sub2 ( int& a , int& b ){
int * pc = new int ;
*pc = a - b ;
return (*pc ) ;
}

此函数可能会导致内存泄漏。

  • 如果该函数的用户仅依赖于该函数的签名,他将假设该函数返回对其他人拥有的对象的引用。因此,分配的对象将不会被释放。

  • 当然,如果用户知道这个技巧,他仍然可以通过获取引用的地址来删除对象

  • 如果在较大的表达式中使用该函数(考虑到签名,这非常诱人),例如sub(3, sub(2,1)),则他将没有机会捕获临时引用。

请注意,如果内存分配出现问题,此函数MIGHT还会抛出bad_alloc