码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-04-09 21:46:30      阅读:132      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!