C++ デストラクターは例外をスローすることができ、このクラス (またはこのクラスから派生したクラス) の少なくとも 1 つのスタティック/グローバル・インスタンスがあります。
実行ライブラリーやダイナミック・ライブラリーのアンロード時に実行されるスタティックなオブジェクトの廃棄など、例外が許可されていないコンテキストで例外がスローされる可能性があるため、この使用方法は安全ではありません。そのようなコンテキストで例外がスローされると、C++ ランタイムはアプリケーションを正常に実行できません。
ID |
問題箇所 |
説明 |
---|---|---|
1 |
例外のスロー |
例外がスローされた場所 |
2 |
定義 |
デストラクターが定義された場所 |
#include <stdio.h> class Bomb { // bad class throws exception from destructor public: int x; Bomb() : x(0) {} ~Bomb() { throw "boom"; } }; // Global variable that will throw exception when // torn down during program exit Bomb myBomb; int main(int argc, char **argv) { printf("goodbye, world\n"); // program blows up after return from main }
© 2010 Intel Corporation. 無断での引用、転載を禁じます。