c++ - shared_ptr在 nullptr 上调用的析构函数
问题描述
我有一段简单的代码来加载共享库
std::shared_ptr<void> hnld;
hnld.reset( dlopen("libFoo.so", RTLD_NOW),dlclose);
if(!hnld){
std::cout << "Failed to load. "<< std::endl;
}
加载库后,一切正常,但如果失败,则会显示消息,但是在调用析构函数时代码会崩溃dlclose
,这是预期的对象无效。假!hnld
的,不应该知道不应该调用析构函数的智能指针吗?
注意我知道如何通过使用另一个析构函数来解决这个问题,该析构函数nullptr
在调用dlclose
. 我的问题是:为什么共享指针会这样?
解决方案
推荐阅读
- c++ - ffi-napi 如何接受包含 char 数组的结构作为返回类型?
- java - 如何在 RecyclerView 中设置 ListObject
- python-3.x - 错误:无法识别名称为“swapExactTokensForTokens”的预期函数
- python - 如何使用 Apply 函数从 Pandas 返回多列
- python - 无法在实例化时使用类级别属性,尚未定义变量
- python - tkinter- Photoimage Menubutton 错误
- wordpress - Woocommerce _ 更改/翻译
文本 .php/css?(Woo 引用一个产品)
- node.js - 如何在 CloudFormation 文件中分配 AWS SecretsManager 策略?
- reactjs - 哪一种字体在使用 cdn 或 npm 的反应应用程序中很棒
- fonts - 文本/字符显示为空方框