草庐IT

exception_ptr

全部标签

c++ - 为什么不再允许从数组的 unique_ptr 创建 shared_ptr?

来自cppreference:InC++11andC++14itisvalidtoconstructastd::shared_ptrfromastd::unique_ptr:std::unique_ptrarr(newint[1]);std::shared_ptrptr(std::move(arr));Sincetheshared_ptrobtainsitsdeleter(astd::default_deleteobject)fromtheunique_ptr,thearraywillbecorrectlydeallocated.ThisisnolongerallowedinC++17

c++ - 如何结合使用 std::bind 和 std::shared_ptr

我需要经常做这样的事情:AsyncOperation*pAsyncOperation=newAsyncOperation();autobindOperation=std::bind(&AsyncOperation::operator(),std::ref(*pAsyncOperation));std::threadthread(bindOperation);thread.join();AsyncOperation是实现operator()(也称为函数对象)的任何自定义类。是否可以指示std::bind使用std::shared_ptr而不是std::ref?这将防止内存泄漏,而无需我保

c++ - weak_ptr 如何知道共享资源已过期?

考虑以下代码:#include#includeusingnamespacestd;structMySharedStruct{inti;};voidprint_value_of_i(weak_ptrweakPtr){if(shared_ptrsp=weakPtr.lock()){coutisharedPtr(newMySharedStruct());sharedPtr->i=5;weak_ptrweakPtr;weakPtr=sharedPtr;print_value_of_i(weakPtr);sharedPtr.reset(newMySharedStruct());//i=10;pr

c++ - boost shared_ptr : difference between operator= and reset?

下面两段代码有区别吗?它们中的任何一个比另一个更可取吗?运算符=boost::shared_ptrfoo;//foo.ptrshouldbeNULLfoo=boost::shared_ptr(newBlah());//Involvescreationandcopyofashared_ptr?重置boost::shared_ptrfoo;//foo.ptrshouldbeNULLfoo.reset(newBlah());//foo.ptrshouldpointnowtoanewBlahobject注意:我需要定义shared_ptr然后将其设置在不同的行中,因为我在一段代码中使用它,例如

c++ - 在这种情况下我应该使用 unique_ptr 还是 shared_ptr?

在我的QT应用程序的主窗口中,我使用std::shared_ptr来保存指向我的网络服务实例的指针,该实例管理与多个客户端的所有连接。现在,我必须将这个指针传递给多个子窗口,以便它们可以与客户端通信。我最好在主窗口和子窗口中使用std::shared_ptr成员变量并在创建子窗口时传递复制它,还是使用std更好::unique_ptr并将原始指针传递给子窗口,因为主窗口无论如何都会比子窗口长寿?非常感谢! 最佳答案 主要的实际区别是当主窗口被销毁而子窗口仍然存在并正在使用网络服务时会发生什么:如果您使用unique_ptr并传递原始

c++ - 如何检测我的代码是否使用 -fno-exceptions 进行编译?

我正在编写一个C++库,我想让我的API为无效参数抛出异常,但是当使用-fno-exceptions编译代码时,我依赖于断言。有没有办法在编译时检测我是否被允许使用异常处理?请注意,我正在编写一个仅包含header的库,因此我没有configure阶段,也无法访问构建系统来简单地在命令行上定义一个宏(并且我不想给用户增加负担)。由于标准没有任何“-fno-exceptions”的概念,当然解决方案可能依赖于编译器。在这种情况下,我对同时使用g++和clang++的解决方案感兴趣,其他编译器对于这个项目并不重要。非常感谢 最佳答案 G

c++ - std::exception 的 what() 返回 "std::exception"

这里的Java人一直在做一些C++。我正在捕获一个异常并试图诊断它来自哪里(遗憾的是当通过gdb运行时没有抛出异常)。但是,当我打印出异常的what()时,我只是得到字符串“std::exception”。这是特定于标准库中的任何东西还是很多标准异常都返回这个?这是我要打印的内容:}catch(conststd::exception&ex){std::cout输出只是:std::exception另外,我在一个相当大的代码库中工作,这可能是我们这边的一些异常,但我还没有通过常规搜索技术找到它,所以我目前倾向于这个即将到来的来自标准库。如果相关的话,我正在使用g++4.8。

Failed to obtain JDBC Connection;nested exception is dm.jdbc.driver.DMException:初始化SSL环境失败

背景一个基于若依单体架构的多模块Maven项目的国产化迁移适配,由于是客户的代码,我们不用关心具体的功能实现,直接来做迁移即可。实施时,按照我们总结的整改建议调整源码,具体迁移适配过程可参考本专栏的其他文章。组件信息组件操作系统:麒麟V10CPU:HUAWEI,Kunpeng920数据库:达梦8东方通:TongWeb7JDK:1.8.0_272OpenJDKOpenssl:1.1.1f反向代理:Nginx1.20.2缓存服务:Redis6.2.6Python:3.7.9系统环境#操作系统[root@localhost~]#uname-aLinuxlocalhost4.19.90-24.4.v2

Exception in thread “main“ java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at java.base/jdk

 解决方案:对此,小编总结出两种解决方案,小编个人觉得第二种更方便简单,希望可以帮助到大家方法一:1.确保已经下载下驱动包,如若没有,点击下载:MySQL::DownloadConnector/J默认为最新版本,红线部分可以切换至以前版本,这里我选择5.1.48的版本,如下图:  2.导入驱动包    (1)找到你下载下来的包中mysq-connector-java-5.1.48-bin.jar文件,如下图     (2)找到你下载的jdk文件下面jre文件下面lib文件下面的ext文件        完整目录:jdk\jre\lib\ext         3.在idea中导入jar包点击F

c++ - 缺少 shared_ptr 和 weak_ptr 之间的相等性

虽然我明白为什么shared_ptr和unique_ptr没有operator==,但我想知道为什么没有shared_ptr和weak_ptr。特别是因为您可以通过对shared_ptr的引用创建一个weak_ptr。我假设在99%的时间里您都需要lhs.get()==rhs.get()。我现在会继续将其引入我的代码,除非有人能给我一个很好的理由,为什么不应该做这样的事情。 最佳答案 weak_ptr没有get()方法,因为您需要在访问底层指针之前显式锁定weak_ptr。明确这一点是一个深思熟虑的设计决定。如果转换是隐式的,那么很