记一次源码分析

Posted jijiboy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次源码分析相关的知识,希望对你有一定的参考价值。

首先分析一段很短的代码 

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

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

 








以上是关于记一次源码分析的主要内容,如果未能解决你的问题,请参考以下文章

Unity记一次Amplify Shader Editor-编辑器扩展开发Canvas框架

记一次源码分析过程,顺便给MyBatis修个Bug

记一次Unity4.x源码编译过程之二:开小灶

记一次OGG数据写入HBase的丢失数据原因分析

记一次Unit4.x源码编译过程

“不敢去怀疑代码,又不得不怀疑代码”记一次网络请求超时分析