【发布时间】:2019-12-28 07:57:50
【问题描述】:
我有一个用于分配的测试应用程序,我必须将共享指针推回共享指针向量。但是它在 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”,但没有调用“添加到向量”。
【问题讨论】:
-
什么是
Test?另外,get_data()是什么?我不认为它是std::shared_ptrAPI...的一部分... -
您在控制台中看到了吗?
std::cout << "Created shared pointer for " << data_ptr->get_data() << std::endl; -
get_data() 正在返回作为 Test 类的一部分存储的 int。我看到了“为” cout 文本创建的共享指针。
标签: c++