首页 > 其他 > 详细

MS笔试中的一个关于函数返回的“小”题

时间:2015-04-09 21:43:38      阅读:101      评论:0      收藏:0      [点我收藏+]

Which of following C++ code is correct ?

A.

int f()
{
    int *a = new int(3);
    return *a;
}

B.

int *f()
{
	int a[3] = {1,2,3};
	return a;
}

C.

vector<int> f()
{
	vector<int> v(3);
	return v;
}

D.

void f(int *ret)
{
	int a[3] = {1,2,3};
	ret = a;
	return ;
}

这题考察的是程序中的内存分配,A中指针a是位于栈上,a指向的内存位于堆中,能够返回整型但是会有内存泄露。

B中数组a为栈上数据,函数返回后自动释放,故返回a指针不能返回数组数据。

C中返回的的是向量,过程实际上是通过临时变量拷贝到指定的变量中,正确。

而D错误与B类似。

总结一句,基础不牢,地动山摇。

MS笔试中的一个关于函数返回的“小”题

原文:http://www.cnblogs.com/bestwangjie/p/4411610.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!