zoukankan      html  css  js  c++  java
  • MS笔试中的一个关于函数返回的“小”题

    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类似。

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

  • 相关阅读:
    Linux 工具命令
    Js的一些工具方法
    使用curl测试网络通信
    python 创建XML
    Nginx 使用Lua脚本
    lua 安装cjson
    3对象和类_动手动脑
    10.5
    10.4动手动脑
    10.2
  • 原文地址:https://www.cnblogs.com/bestwangjie/p/4411610.html
Copyright © 2011-2022 走看看