如果我使用new并获取std::bad_alloc编译器不要因为异常调用构造函数。 但是它如何与nothrow new一起工作,因为我们在每种情况下都得到指针? 这种情况的标准中是否有特殊段落? ...
如果我使用new并获取std::bad_alloc编译器不要因为异常调用构造函数。 但是它如何与nothrow new一起工作,因为我们在每种情况下都得到指针? 这种情况的标准中是否有特殊段落? ...
现在我正在尝试使用 arm-none-eabi 工具链将 Nuttx 与 libc++ 交叉编译。 大多数事情都很好,但是一些 C++ 应用程序对std::nothrow nothrow 有未定义的引用。 我发现std::nothrow nothrow 似乎是在工具链的libsupc++.a中定义的 ...
为什么这段代码会抛出异常? 它打印new expression threw std::bad_array_new_length 。 根据标准,在这种情况下,新表达式应返回 nullptr。 如果 noptr-new-declarator 中的表达式存在,则它被隐式转换为 std::size ...
对于new运算符,我们有std::nothrow版本: 对于std::make_shared或std::make_unique我们有这样的东西吗? ...
长标题:为什么std:variant的operator=(T&& t)的noexcept规范不依赖于内部类型的析构函数的noexcept规范? 我可以在cppreference上看到 是 所以这个编译: 但是它调用了FooThrow的析构函数,它是n ...
以下代码: 使用g++ -std=c++11编译时产生以下输出: 为什么std::pair<string, int>不是无法构造的,而Foo是,为什么它不能移动构造? ...
我在新运算符中使用c ++常量值std :: nothrow以避免失败时出现异常,而是返回null。 但是,正如我尝试过的那样,这似乎不适用于我的环境,是Linux x86_64上的g ++ 4.4.4。 以下是测试程序和执行结果: 执行结果: 在输出消息中,抛出了异常; ...
我正在编写一个 cpp 代码来将一个应用程序从 Windows 移植到 Mac。 在 Xcode 中构建应用程序时,它会抛出以下错误: 这些错误在 cpp 标准库头文件中抛出。 以下是错误堆栈描述: 我在互联网上搜索,但无法找到此问题的解决方案。 任何建议都会有所帮助。 为什么从系统头文件 ...
为什么我不能使operator ++()无效? 这可能是使用后缀++运算符(超过前缀++运算符)的少数优点之一。 例如,此代码无法编译 附带说明一下,postfix运算符也可以设置为线程安全的。 ...
在以前的程序中,我使用以下代码来检查内存分配失败,通常不考虑替代方案: 此处还记录了此方法。 我在这里找到了语法的参考: 这表明如果程序员没有将nothrow “参数”包含在new中,那么对nullptr的检查是无效的? 它是否正确? 还是操作系统依赖? 据我了解 ...
我试图指定每当Foo的析构函数不nothrow时,函数就不抛出。 我可以通过使用trait std::is_nothrow_destructible<>类型来实现。 如何直接执行此操作? 我尝试了以下操作,但是如果我取消注释行,它就不会编译 我得到一个错误 错误 ...
请考虑以下代码: 这会产生以下输出: 正如你所看到的那样,尽管分配了Foo失败,但第一个Bar的分配仍然成功。 Bar的第二次分配和Baz的alloaction通过使用std :: bad_alloc正确地失败了。 现在我的问题是:如何制作“new(std :: noth ...
“placement new”运算符声明为: 但是虽然它不涉及任何实际分配,但是消除了错误的分配异常,指针仍然可能指向错误的位置,在这种情况下,人们会期望获得范围或上溢/下溢错误,但不会事实上,它被声明为noexcept只是终止执行而不是? 另外这是否意味着C ++前11位置的新会 ...
C ++的new有一个选项可以返回空指针,而不是在分配失败时抛出bad_alloc异常。 (是的,我理解这只会阻止new抛出bad_alloc;它不会阻止Foo的构造函数抛出异常。) 如果你想使用共享指针而不是原始指针,你通常应该使用make_shared,因为它对控制块的分配很聪 ...
我有一个自定义的内存分配器,写成类似 由于标准说我不应该抛出异常,所以我不检查分配是否成功。 现在,我在模拟分配器对象,以便malloc函数调用返回我NULL。 我正在使用此运算符,像这样: 它在此处崩溃,gdb的bt显示如下所示。此指针突然变为0x0。 谁能解释我..! ...
什么是关于函数构建字符串的首选方式属性@safe , pure和nothrow和编译时和运行时的养育功能的表现呢? 例如,我们是否应该使用 要么 我认为format版本比较容易看,但在其他方面是否更好? 由于格式字符串及其参数必须使用CTFEed,对编译时间可能会造成 ...
可以std :: string s; 在任何情况下扔? 这是否受标准规范(对C ++ 03感兴趣,如果存在差异)? ...
当我进行如下编码时,它将返回“ null”,并且没有发生异常。 不对新运算符使用'nothrow'参数呢? 它也返回“ null”吗? 如果是这样,为什么建议使用“ nothrow”参数? 谢谢你的时间。 ...
我遇到了一个小标准头文件<new> 。 我以前可能没有看到它的直接使用。 这是有兴趣的人的g ++版本 。 以下部分是我感兴趣的: 如何struct nothrow_t及其对象nothrow是由程序员使用呢? 该对象真的需要extern吗? new_h ...
有这样的代码: 但是,这个程序仍然抛出std :: bac_alloc异常,尽管使用std :: nothrow参数调用new。 此程序在Visual C ++ 2010中编译。为什么抛出异常? 编辑: 在mingw的Windows上使用g ++,一切正常。 ...