记一次源码分析
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++
首先分配内存,这个肯定不用多说
以上是关于记一次源码分析的主要内容,如果未能解决你的问题,请参考以下文章