【发布时间】:2020-07-11 08:41:37
【问题描述】:
我想创建一个方法,它使用std::vectors 来建立数据集合,然后对数据进行一些操作,最后,我想通过给定参数的指针传递生成的信息,如图所示在这个小例子中:
struct MyStruct
{
int* list;
int entry_count;
};
static MyStruct createList()
{
vector<int> vectorList;
MyStruct data;
vectorList.push_back(1);
vectorList.push_back(1);
vectorList.push_back(1);
vectorList.push_back(1);
vectorList.push_back(1);
data.list = &vectorList.front();
data.entry_count = vectorList.size();
return data;
}
int main(int argc, char** argv)
{
MyStruct data;
data = createList();
return 1;
}
问题是,方法关闭后,向量被销毁,指针无处显示。
我将如何以正确的方式处理这个问题?那么如何在不取消分配的情况下将此集合分配给指针呢?
【问题讨论】:
-
如果你检查它,你会注意到
main中的list仍然是空指针,而不是指向某个过期向量数据的指针。分配给函数的(非引用)参数在函数外部无效。
标签: c++ c++11 pointers stdvector lifetime