记一次源码分析

首先分析一段很短的代码 

#include<iostream>
#include<vector>
using namespace std;

vector<int> getdata(){
    vector<int> v{2,3,4,5,6};
    // return std::move(v);
    return v;
}

int main()
{
    //vector<int> temp(getdata());
   auto b=begin(getdata());
   cout<<*b;
   //以下方式输出正常
   for(auto i: getdata()){
      cout<<i;
   }
return 0; }

这段代码是错的,里面出现了一个很容易犯得bug/如果函数中有建立本地对象并需要返回时,只能返回对象,不能返回指针或引用,因为函数调用完后,这个对象也就会随之进行析构(释放),但是如果我们试着返回一个vector的本地对象时然后对这个本地对象直接调用begin()函数得到的却不是我们想要的,然后我就去单步调试了/去挑战

//说明环境 我用的是mingw编译器 g++

首先分配内存,这个肯定不用多说

猜你喜欢

转载自www.cnblogs.com/jijiboy/p/10162857.html