关于C++使用STL时申请一个指向STL的指针的有关问题

关于C++使用STL时申请一个指向STL的指针的问题
如题,场景是这样的,我在某一个函数里面创建了一个queue,这个函数返回一个指向queue的指针到外面,然后我再引用这个指针,就是这样的:

queue<int>* function(....){
queue<int> q1;
....
return &q1;


然后在外面我是这样用的:

queue<int> q = *function;

编译器都没有任何报错,但是调试的时候就不行,会跳出,请问这是为什么?我这样使用对吗?我只是想让两个函数都对同一个queue操作
------解决思路----------------------
你返回的是一个局部变量的指针,在函数结束时就销毁了,也就是你指针指的对象已经没了,当然会引起错误
------解决思路----------------------

queue<int>* function(....){
queue<int> q1=new queue<int>();
....
return q1;
}


原因如楼上所说。
这里使用动态分配内存就不会导致局部指针变量销毁。
------解决思路----------------------
queue<int> q1=new queue<int>();

-------------------------------------------------
应为:queue<int>* q1=new queue<int>();
------解决思路----------------------
#include <memory>

shared_ptr<queue<int> > & function(....){
//queue<int> q1;
....
shared_ptr<queue<int> >  q1 = make_shared<queue<int> >();
return q1;


使用智能指针更好,返回被调用函数里面的new指针,在函数外用完之后还要记得及时释放。