報告錯誤 weak_ptr 例外狀況。 語法 C++ classbad_weak_ptr:publicstd::exception { bad_weak_ptr();constchar*what()throw(); }; 備註 這個類別描述來自接受weak_ptr 類別類型引數的shared_ptr 類別建構函式可能擲回的例外狀況。 成員函式what會傳回"bad_weak_ptr"。
1. std::bad_weak_ptr异常的含义 std::bad_weak_ptr是C++标准库中的一个异常类型,它属于智能指针异常的一种。当尝试对一个已经过期的std::weak_ptr执行解锁(lock)操作,而该weak_ptr所管理的对象已经被销毁时,就会抛出std::bad_weak_ptr异常。这表示weak_ptr不再指向一个有效的对象。
出现boost::bad_weak_ptr最可能的原因是enable_shared_from_this<>类构造函数中调用shared_from_this(), 因为构造尚未完成,实例还没有被shared_ptr管理,自然没有weak_ptr. 还有可能就是enable_shared_from_this<>类没有创建成shared_ptr, 例如错误用成了scoped_ptr....
bad_weak_ptr 基本这个错误基本就是出现在shared_from_this调用过程中。 或者对应对象不是用make_shared分配,或者对应的对象已经释放了(实际释放后也不一定就会报错,但是当使用valigrind检查内存时,释放内存后会把内存重置,此时会检测到weak_ptr应该设置的标识不对而报错。)。
class bad_weak_ptr : public std::exception { public: bad_weak_ptr(); const char *what() throw(); }; 备注 类描述可以从shared_ptr 类构造函数引发采用类型的参数异常。weak_ptr 类成员函数 what 返回 "bad_weak_ptr"。 示例 复制 // std_tr1__memory__bad_weak_ptr.cpp // compile with: /...
classbad_weak_ptr; (C++11 起) std::bad_weak_ptr是std::shared_ptr以std::weak_ptr为参数的构造函数,在std::weak_ptr指代已被删除的对象时,作为异常抛出的对象类型。 继承图 成员函数 (构造函数) 构造新的bad_weak_ptr对象 (公开成员函数)
bad_weak_ptr& operator=( const bad_weak_ptr& other ) noexcept; (C++11 起) 以other 的内容赋值。如果 *this 与other 均拥有动态类型 std::bad_weak_ptr,那么赋值后 std::strcmp(what(), other.what()) == 0。 参数 other - 用来赋值的另一异常对象 返回值 *this std...
std::bad_weak_ptr 是std::shared_ptr 以std::weak_ptr 为参数的构造函数,在 std::weak_ptr 指代已被删除的对象时,作为异常抛出的对象类型。 继承图 成员函数 (构造函数) 构造新的 bad_weak_ptr 对象(公开成员函数) operator= 替换bad_weak_ptr 对象(公开成员函数) what 返回解释字符串(公开成员函数) st...
在调用 shared_from_this() 时,我的服务器崩溃并显示以下消息: 例外:tr1::bad_weak_ptr 我已经进行了一些搜索,它似乎 shared_from_this() 非常特别,但我似乎无法找到我需要更改的确切内容。 原文由 chrisvj 发布,翻译遵循 CC BY-SA 4.0 许可协议 c++...
bad_weak_ptr 错误。 terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::bad_weak_ptr> >' what(): tr1::bad_weak_ptr Aborted 我做错了什么,我该如何解决?