MeCab のエラー処理のため、デストラクタで longjmp する凶悪なプログラムを書いたのですが、やはり自分自身の解放がうまくいってないようです。VC7 は、ご丁寧にメモリーリークの可能性がありますと言ってくれます。 struct Bar { ~Bar() { std::cout << "Bar deleted" << std::endl; } }; struct Foo { jmp_buf *jmp_; Bar bar; Foo(jmp_buf *jmp): jmp_(jmp) {} ~Foo() { longjmp(*jmp_, 1); } }; int main(int argc, char **argv) { jmp_buf jmp; if (setjmp(jmp) == 1) { std::cout << "retrun 0" << std::endl; return 0;
Exception-Safety in Generic Components Lessons Learned from Specifying Exception-Safety for the C++ Standard Library David Abrahams david.abrahams@rcn.com 概要 この文書は実世界の必要性に対する応答の中で蓄積された知識を表す: つまり、 C++ 標準テンプレートライブラリは、役立つ、そして明確な例外との相互作用を示し、 エラー捕捉の機構は C++ 言語の中核に組み込まれている。 この文書では、例外安全性の意味を探求し、例外と汎用性についての驚くべき神話を明らかにし、 プログラムの正当性を理由付けるための価値ある道具について述べ、 例外安全性を実証するための自動化されたテストの手続きを概説する。 Keywords: exception-sa
(2005.4.3) 新規公開 (2017.6.18) 最近の言語仕様に更新. 大幅に加筆。 C++には例外機構が備わっているが、C言語との互換性を確保するためなのか、不可解な動作をするところが多い。 例外を送出しない関数宣言 -- 動的例外指定 (この節は、2000.6.25の日記に加筆したもの。) 関数(またはメソッド)宣言で throw () を付けると, その関数からは例外を投げないという意味になる。にもかかわらず、中で, 例外を投げることができる。 次のソースコードは、関数 f() のなかで例外を投げる。gcc 3.4.2 (Fedora Core 3) では、コンパイル時にエラーも警告も出ない。 [2017-06] gcc 6.3.1 (Fedora 25 Linux) では, f() throw() では警告が出ないが, f() noexcept で、かつブロック内に直接 t
プログラムの流れを制御する手段として、いわゆる「構造化構文(for とか if とか)」、悪名高い「goto 文」などがあるのは周知のことだが、かなり特殊なものとして、「setjmp, longjmp」による「非ローカル分岐」と呼ばれるものがある。この「非ローカル分岐」は「非ローカル」と言うだけあって、ある関数の中から、別な関数に制御を移すことができたりする。まあ、そのために乱用すべきではなく、注意して使わなくてはならないライブラリ関数なのだが、実はこれは Java や C++ で言語の上で実装されている「例外」の基礎となるものである。だから、まずこの標準ライブラリ関数「setjmp, longjmp」について解説しよう。 → Java 講座の「例外」 setjmp, longjmp とは どうやって実現してるの? setjmp/longjmp の利用例~インタプリタ 補追1:setjmp
AWS News Blog Using AWS and XSLT to create JSON It is always interesting to see how a developer’s background, experiences, and the contents of their “mental toolkit” come together in unique approaches to problem solving and creative thinking. Here’s an example of what I am talking about. Alan Taylor of Kokogiak.com has been building applications with AWS since the early days, starting out with his
動画検索SAGURIとAWS(Amazon Web Services)を使ったマッシュアップサイト 「MUSIC DIRECTORY」 を作ってみた。 やってることは単純で、 バンド名をクリックすると、バンド名をSAGURIで検索した結果と、Amazonで検索した結果を表示してるだけです。 特徴としては、すべてJavascriptで動いていて、サーバーサイドのコードはいっさいありません。 「人気動画」と「新着動画」はSAGURIの検索結果RSS feedをGoogle Ajax Feed APIで処理し、Amazonはバンド名をAWSで検索して取得したXMLをXSLTでJSONに変換し、ページのcallback関数を呼ぶようなコードもJSONに入れておき、データをjsで受け取ります。 (この手法はma.laさんのAmazon最速検索を参考にして、簡略化したものです。なのでamazo
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く