首页 > 其他 > 详细

记一次源码分析

时间:2018-12-22 23:42:27      阅读:128      评论:0      收藏:0      [点我收藏+]

首先分析一段很短的代码 

#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++

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

 

记一次源码分析

原文:https://www.cnblogs.com/jijiboy/p/10162857.html

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