L****Y 发帖数: 355 | 1 vector * func()
{
vector v{{1}};
return &v;
}
vector *v = func();
cout<at(0); |
s********n 发帖数: 62 | 2 我就瞎猜猜哦。。
返回的是指向这个vector的地址。
但是这个local vector 在函数结束期就被GC了,
所以再指向这个地址的时候发现是垃圾?
试试把local v变成 global v? |
P******r 发帖数: 1342 | 3 变量v在stack上,你返回后就相当于是放掉了,很可能被其它值覆盖掉
:vector<int> * func()
:{ |
r*g 发帖数: 186 | 4 我晕..返回stack上临时数据啊
那个{{1}} 我试了一下居然没问题
我以为只能写成{1}
【在 L****Y 的大作中提到】 : vector * func() : { : vector v{{1}}; : return &v; : } : vector *v = func(); : cout<at(0);
|
n*****n 发帖数: 5277 | |
n******n 发帖数: 12088 | 6 当然没问题。调用的是move ctor
【在 r*g 的大作中提到】 : 我晕..返回stack上临时数据啊 : 那个{{1}} 我试了一下居然没问题 : 我以为只能写成{1}
|