タグ

Windowsとスタックに関するrti7743のブックマーク (1)

  • アレ用の何か

    概要 C++0x では関数の delete 指定によりnew演算子で割り当てられないようにすることも出来るらしいですが、その逆のお話。 コンパイル時ではなくランタイム時になりますが、コンストラクタでスタックの範囲を調べてその中に納まっていたら例外を発生させれば良いわけです。 スタックの範囲を取得する スタックの範囲は TIB とよばれるスレッド毎にもつ領域に納められています。TIB の中身は Windows のバージョンによって異なりますが最初の数バイトはどのバージョンでも共通で、その中にスレッドの範囲も収められています。 TIB の共通部分は WinNT.h で NT_TIB という名前の構造体で以下のように定義されています。 WinNT.h typedef struct _NT_TIB { struct _EXCEPTION_REGISTRATION_RECORD *Exception

  • 1