草庐IT

default_delete

全部标签

c++ - 何时使用 =default 使析构函数默认?

虽然对构造函数使用=default对我来说很清楚(即强制编译器在其他构造函数存在时创建默认构造函数),但我仍然无法理解这两种类型的析构函数之间的区别:那些使用=default那些没有明确定义的,由编译器自动生成的。我唯一想到的是group-1的析构函数可以定义为虚拟的,但是group-2始终是非虚拟的。那么,这是它们之间唯一的区别吗?是否存在编译器未生成析构函数但使用=default强制编译器生成析构函数的情况?附注我在stackoverflow中查看了很多问题,但没有一个能回答我的问题。以下是一些相关问题。Differencebetween=defaultand{}ctos/dest

c++ - 有没有办法在初始化字符串时避免来自 clang-tidy (fuchsia-default-arguments) 的警告?

考虑这段代码:#includeintmain(){std::stringstr="notdefault";std::cout运行clang-tidy-checks=*string.cpp给出以下内容:7800warningsgenerated./tmp/clang_tidy_bug/string.cpp:4:21:warning:callingafunctionthatusesadefaultargumentisdisallowed[fuchsia-default-arguments]std::stringstr="notdefault";^/../lib64/gcc/x86_64-p

c++ - ThreadSanitizer 在使用嵌入式引用计数器时报告 "data race on operator delete(void*)"

请看下面的代码:#include#includeclassReferenceCounted{public:ReferenceCounted():ref_count_(1){}voidreserve(){ref_count_.fetch_add(1,boost::memory_order_relaxed);}voidrelease(){if(ref_count_.fetch_sub(1,boost::memory_order_release)==1){boost::atomic_thread_fence(boost::memory_order_acquire);deletethis;}}

c++ - 使用替换的 operator new 进行 Clang 链接时优化会导致 valgrind 中的 free()/delete 不匹配

当将clang3.5.0与-flto一起使用并与共享库链接时,似乎在共享库中调用operatordelete不遵循与调用相同的符号解析顺序来自主要对象的code>operatornew。示例:共享.cpp:voiddeleteIt(int*ptr){deleteptr;}ma​​in.cpp:#include#includevoid*operatornew(size_tsize){void*result=std::malloc(size);if(result==nullptr){throwstd::bad_alloc();}returnresult;}voidoperatordelet

c++ - 多重继承中使用operator delete时谁来调用类的Destructor

这个问题听起来可能太傻了,但是,我在其他任何地方都找不到具体的答案。对后期绑定(bind)的工作原理和继承中使用的virtual关键字知之甚少。在代码示例中,在继承的情况下,指向在堆上创建的派生类对象的基类指针和删除运算符用于释放内存,派生类和基类的析构函数将被调用仅当基类析构函数被声明为虚函数时才按顺序排列。现在我的问题是:1)当base的析构函数不是virtual时,为什么只有在使用“delete”运算符的情况下才会出现不调用deriveddtor的问题,为什么在下面给出的情况下不会:deriveddrvd;base*bPtr;bPtr=&drvd;//DTORcalledinpr

c++ - 这些 window 是什么? .. "M"和 "Default IME"(来自 GetWindowText)

使用EnumWindows和GetWindowText,我看到许多带有“M”和“默认IME”的标题。它们的主要功能是什么?...这似乎是非常基本的功能。 最佳答案 我不确定“M”,但“默认输入法”窗口是由默认输入法编辑器(IME)创建的。IME允许用户在可能涉及多个单独击键的脚本中输入字符,例如中文或韩文。可以通过控制面板中的区域和语言对话框安装不同的IME。在Windows上存在大量隐藏窗口并不罕见,尤其是在运行COM组件时(例如,单线程[STA]单元使用窗口消息泵来序列化操作)。 关

c++ - delete 使用的已分配内存的计数在内存中的确切位置?

int*Array;Array=newint[10];delete[]Array;delete知道分配内存的计数。我用谷歌搜索它存储在内存中,但它依赖于编译器。无论如何都可以使用获取此计数吗? 最佳答案 实际上,堆知道每个分配有多大。但是,这不是您可以轻松访问的东西,并且只能保证大于或等于请求的数量。有时为了字节对齐的好处分配更多。正如Ben所说,在某些情况下,实现确实知道数组中有多少对象,以便可以调用它们的析构函数。 关于c++-delete使用的已分配内存的计数在内存中的确切位置?,

c++ - SFINAE : Delete a function with the same prototype

我想知道这段有效代码之间有什么区别:#include#includetemplateusingis_ref=std::enable_if_t,bool>;templateusingis_not_ref=std::enable_if_t,bool>;template=true>voidfoo(T&&){std::cout=true>voidfoo(T&&){std::cout还有这个不起作用:#include#includetemplateusingis_ref=std::enable_if_t,bool>;templateusingis_not_ref=std::enable_if_t

ios - react native [[DEFAULT]] firebaseapp 未初始化 react-native-firebase

我正在尝试将react-native-firebase模块与reactnative一起使用。我得到的错误:我遵循的步骤:第1步:创建基本应用react-nativeinitmyFirebaseApp移动到项目cdmyFirebaseApp已安装的模块npminstall--savereact-native-firebase第2步:设置FirebaseSDK(https://rnfirebase.io/docs/v4.2.x/installation/ios)为iOS创建了firebase应用并下载了GoogleService-Info.plist已复制GoogleService-Inf

ios - iOS 版 AIR : download a file (from remote server) and open it with default app

我希望我的应用程序(在iOS上移植的AIR应用程序)能够显示位于远程服务器上的文件并使用默认应用程序打开它(如果设备上有一个)。是否可能(也许可以在这里以某种方式使用openWithDefaultApp)?最简单的方法是什么?提前致谢!UPD:我成功下载(到File.documentsDirectory)。我无法强制iPad打开下载的文件。UPD2:我尝试同时使用openWithDefaultApp和NavigateToUrl。 最佳答案 我认为openWithDefaultApplication不支持iOS或Android。Ado