2012 Microsoft Intern Hiring Written Test : 6
来源:互联网 发布:网络执行官 编辑:程序博客网 时间:2024/05/08 04:45
6. 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 ;}
(E) none of above
问题分析:
(A) 内存泄漏(Memory Leak)
int* a = new int (3); //使用new在堆上分配内存,并初始化为3
return *a; // 返回指针a所指内容的一个副本,而不是指针*a本身。
由于本函数结束后,并没有对分配的堆内存进行delete,这样你就不能再对这块内存进行重新分配;
由于在函数返回后,并没有返回在堆上分配内存的地址,这样就不能访问在堆上分配内存的内容;
所以,最终将会导致内存泄漏。
(B) Garbage Value
int a[3] = {1, 2, 3}; // 数组在栈上分配内存
return a; // 返回数组首地址
由于数组a是在栈上分配内存,所以函数结束后栈上的内容将出栈,当你通过return a;获得数组首地址后,试图通过该地址再次进行栈内存时,将会导致获取垃圾值。
(C) Right Answer
vector<int> v(3); // vector在堆上分配3个int的内存,并默认初始化为0
(D) 同B类似
综上分析:我的答案是C。如果有错误的地方,请大家指正!
- 2012 Microsoft Intern Hiring Written Test : 6
- 2012 Microsoft Intern Hiring Written Test : 12
- 2012 Microsoft Intern Hiring Written Test
- 2012 Microsoft Intern Hiring Written Test
- Reverse Linked List : 2012 Microsoft Intern Hiring Written Test 20
- 2013 Microsoft Intern Hiring Written Test : 20
- 学习笔记IV——2012 Microsoft Intern Hiring Written Test (2012微软实习生招聘笔试题)
- network---written test
- 2013 microsoft intern
- 实习生 笔试 Adobe China 2012 R&D Intern Paper Test
- [笔试] 2012-5-6 baidu Written examination
- 【2014校招】Microsoft Summer Intern 笔试
- MICROSOFT IDC 校招 INTERN五轮面经
- Microsoft livewirter test
- Microsoft Certification Test
- Microsoft Velocity Test
- microsoft software test
- microsoft aptitude test
- 【GDB的BUG】文件名中的数字导致调试错误。(附C-Free完全删除手册)
- sharepoint 怎样将一个子网站移动到另一个网站
- iOS上二维码和一维码识别系列一
- 结合node.js和postgresql,创建一个demo
- html数据类型做表
- 2012 Microsoft Intern Hiring Written Test : 6
- 联想Y450 gt130m显卡驱动安装
- stock初始步骤
- openjdk和jdk的区别与联系
- 屏幕白屏解决方法
- Find the missing numbers
- SQLite语法
- Screen 1000 warning message
- 遍历文件夹获取文件名