使用push_back方法获取智能指针矢量时应用崩溃
App crashing when using push_back method for a vector of smart pointers
我有一个作业的测试应用程序,我必须将共享指针push_back到共享指针的向量中。 但是它在push_back上崩溃了,我不知道为什么。
我尝试移动shared_ptr而不是将其复制到矢量,但仍然看到相同的问题。 我尝试调试该问题,但由于某种原因,单击变量后变量未显示在调试器中(可能的 IDE 问题)。 我确实在堆栈溢出上看到了类似的问题,但这与在调用push_back之前初始化共享指针的问题不同。
//Fill - will loop through and ask the user what elements to add
void fill(std::vector<std::shared_ptr<Test>> &vec, int num)
{
for(int i {1}; i <= num; i++)
{
std::cout << "Enter data pointer [" << i << "] : ";
int data {};
std::cin >> data;
std::shared_ptr<Test> data_ptr = std::make_shared<Test> (data);
std::cout << "Created shared pointer for " << data_ptr->get_data() <<
std::endl; //debug
vec.push_back(std::move(data_ptr));
std::cout << "Added to vector" << data_ptr->get_data() << std::endl;
//debug (crash issue is with the pushback method)
}
}
创建shared_ptr后程序崩溃,并且push_back方法似乎未执行。 我添加了 cout 调试消息,以尝试查看程序在此函数中失败的位置。 调用"创建的共享 PTR",但不调用"添加到向量"。
当您从shared_ptr
移动时,移动的变量无效(在本例中为 null)。
你在推送之前打电话给data_ptr->get_data()
,这很好。但是在您推送(通过移动)调用data_ptr->get_data()
后,第二次将使用(现在移自)智能指针 - 因此您的崩溃。
相关文章:
- 使用调试/崩溃报告将应用程序部署到客户端
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 如何找出应用程序崩溃的原因 - Win 10 LTSB
- 操纵安卓相机的深度图导致应用程序崩溃
- 为什么从文件获取图标时应用程序有时会崩溃?
- 在 Ubuntu 服务器上运行 QT 应用程序时崩溃
- 调用 java 的回调() 时应用程序崩溃.由于 detatchThread 而获得运行时错误
- Qt应用程序找不到第三方DLL并崩溃
- 由于____chkstk_darwin,在Catalina上使用部署10.10编译的MacOS应用程序在HighSierra版本<崩溃
- QCompleter set模型使应用程序崩溃
- x64 位的 C++/CLI DLL 和 Exe 的应用崩溃
- 为什么抓取窗口标题的代码会导致应用崩溃?
- 使用push_back方法获取智能指针矢量时应用崩溃
- 强制 c++ 应用崩溃
- 提升编程选项使我的应用崩溃
- 为 Web 视图添加 UI 栏按钮项,但应用崩溃
- 应用崩溃.模板
- 使用 C++/CLR dll 时 C# 应用崩溃
- "std::sin"呼叫上的应用崩溃
- 使用特征库运行 UmfPackLU<> 上的应用崩溃