C++ std::vector<std::shared_ptr>
C++ std::vector<std::shared_ptr>
我对shared_ptrS的向量有问题。我的代码是:
//--------scoala.h--------
class Scoala
{
public:
Scoala(std::string );
int adaugaElev(std::shared_ptr<Elev> elev);
private:
std::vector<std::shared_ptr <Elev>> __elevi;
};
//-----------scoala.cpp-----------------------------
int Scoala::adaugaElev(std::shared_ptr<Elev> elev)
{
__elevi.push_back(elev);
return __elevi.size() - 1;
}
我运行了它,得到了"elev.exe中0x0137b559处未处理的异常:0xC0000005:读取位置0xcccccd0c的访问冲突"。怎么了?
传递到adaugaElev的elev对象很可能没有分配,或者以某种方式未分配(引用计数在shared_ptr中为零)-您需要发布更多代码来显示如何分配elev对象以确认这一点。
在valgrind下运行程序-这将有助于阐明问题所在。
在C++中,使用双下划线前缀的名称是未定义的行为。此外,埃列夫可能因各种原因被捕,我想追溯一下它的起源。
相关文章:
- 使用std::multimap迭代器创建std::list
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 从持续时间构造std::chrono::system_clock::time_point
- std::具有相同基类的类的变体
- 引用 std::shared:ptr 以避免引用计数
- C++14 unique_ptr并使用已删除的函数'std::unique-ptr' unique_ptr错误
- 使用std :: String ptr的错误打印std :: String
- C++中的大小释放:全局运算符delete的正确行为是什么(void*ptr,std::size_t size)
- std::哈希表示无序映射中的唯一 PTR
- boost::shared_ptr和std::shared-ptr的同居
- 我可以用std::shared_ptr而不是boost::shared-ptr构建boost库吗
- 正确使用std智能指针以确保ptr安全
- 如何创建 std::string 包装器,它将 ptr 保留为 std::string 和 ptr 到创建该包装器实例的
- 为什么 std::string{ "const char ptr" } 有效?
- 为什么 gcc 4.9.0 中没有定义"void operator delete(void* ptr, std::size_t size) noexcept;"?
- 在 std::map 的值中使用非 ptr 是一种很好的做法吗
- 共享 PTR - C++:std::shared_ptr<T> 和 std::shared_ptr<T const> 有什么区别?