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

时间:2015-03-28 11:35:50

标签: c++ pointers reference

伙计们,我刚收到老师的红利问题!谢谢你的帮助!!

下面的sub2不会导致运行时错误,但可能还有其他错误 问题。有什么问题?

在这里输入代码

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

1 个答案:

答案 0 :(得分:1)

此功能可能会导致内存泄漏。

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

  • 当然,如果用户知道这个伎俩,他仍然可以通过参考地址删除该对象

  • 如果函数用于更大的表达式(给定签名非常诱人),例如sub(3, sub(2,1)),他将无法抓住临时引用。

请注意,如果内存分配存在问题,此功能MIGHT也会抛出bad_alloc