exception-safe

    2热度

    2回答

    这种方法不安全吗? #include <tr1/memory> Foo * createFoo() { return new Foo(5); } int main() { std::tr1::shared_ptr<Foo> bar(create()); return 0; } 或者这将是最好的createFoo返回一个shared_ptr<Foo

    0热度

    1回答

    从std::unique_ptr<>()的文档中,初始化指针时可能发生的情况对我而言并不清楚。 当分配std::shared_ptr<>()时,它分配一个内存缓冲区来处理引用计数器。所以我可能会得到一个std::bad_alloc异常。 当初始化一个唯一的指针时会发生类似的事情吗? 我在问这个问题,因为如果这样做的话,我可能实际上失去了我试图通过唯一指针删除的内容。例如: void deleter

    6热度

    4回答

    每当我需要动态分配的对象添加到载体中我一直在做下列方式: class Foo { ... }; vector<Foo*> v; v.push_back(new Foo); // do stuff with Foo in v // delete all Foo in v 这只是工作和许多其他人似乎做同样的事情。 今天,我了解到vector :: push_back可以抛出异常。这

    4热度

    1回答

    资源获取初始化(RAII)习惯用法和try-finally语句构成编写exception safe编程的传统方法的基础。 我的问题是:是否有类似于C#上的Scope Guard Statement?

    2热度

    3回答

    我只是不记得用于这个和其他相关属性的术语。 编辑 - 也许这样的概念不存在,但我记得阅读有效的C++(或更有效的C++),他主张使用交换提交更改最后在函数中的东西,因为向量交换函数保证不抛出一个例外。

    0热度

    2回答

    我正在使用.Net HtmlTextWriter来生成HTML。 try { htw.RenderBeginTag(HtmlTextWriterTag.Span); htw.Write(myObject.GenerateHtml()); htw.RenderEndTag(); } catch (Exception e) { GenerateHtm

    3热度

    6回答

    有没有办法获得有关Java标准类的异常安全方面的一些细节?主要使用C++和C#,我对Java异常规范感到困惑,所以我需要理解处理异常的正确方法。 更具体地说,我们来考虑一下ServerSocket。它的对象一旦构建就会开始监听传入的连接。然后,您应该使用accept()接受连接(如果有人试图连接)。 如果您以前使用setSoTimeout()配置服务器套接字,则会发生以下变化:accept()将丢

    4热度

    3回答

    编写类(使用copy-and-swap idiom)时的一般指导原则是提供非抛出交换成员函数。 (Effective C++, 3rd edition, Item 25和其他资源) 但是,如果我不能提供nothrow保证,因为我的课程使用不提供交换操作的第三方类成员? // Warning: Toy code !!! class NumberBuffer { public: ...

    10热度

    5回答

    我只是一个初出茅庐的程序员,至少试图编程比最好的情况更多。我一直在阅读Herb Sutter的“Exceptional C++”,并且迄今为止已经进行了三次异常安全章节的讨论。然而,除了他提出的例子(一个Stack)之外,我不确定什么时候我应该争取异常安全与速度,以及什么时候这很简单。 例如,我目前的家庭作业项目是一个双向链接列表。既然我已经编写了其中的一些,我想花时间去深入一些更深入的概念,比如