operator newのオーバーロード

C++言語ではメモリ確保・解放の命令をハックしてユーザー処理する事が出来ます。
それが operator new、operator delete のオーバーロードです。

組み込み系でのメモリ管理は独自機構が多いので、
特に深く考えずにオーバーロードする事にしました。

続きを読む

寿命管理シングルトン

シングルトンは便利なので色々な所で使いますが、
このデザインパターンを用いると消失タイミングに頭を悩ませる事が多々有ります。

一般的なシングルトンは2個以上生成しない様にする為の技法であり、
1個生成すると後は使い回しに依って2個目の生成を回避するのが基本的な設計です。
つまり2に成らない様に1で止める技法であり、1が0になる時の挙動管理はシングルトンの範疇では無いのです。
結果的に1から0に変化する時の挙動は管理されていないのでプログラマが自分で管理しないといけません。

さて、では1が0になる時の挙動を管理したい場合は何を用いるべきか。
簡単です、スマートポインタです。
寿命管理のプロフェッショナルです。

では、この2つの技法を合わせて寿命管理を併せ持ったシングルトンを作りましょう。

続きを読む

C++で拡張メソッド

C#の拡張メソッドが常々羨ましく思っていました。簡単に言うとメンバ関数がクラス外から追加出来る機能です。
extern "C" {
    typedef struct tag_POINT {
        int x;
        int y;
    } POINT;
}
上記の様な既存の構造体が有ったとして、下記の様に記述出来れば拡張メソッドと言えます。
POINT point;
point.SetPos(3, 4);
C++は演算子(operator)こそ外部から追加出来るのですが、メンバ関数は外部から追加出来ないんですよね。
何とか成らないかなと考えていたら何とか成りました。

続きを読む