コンストラクタでnewしデストラクタでdelete[]するchar*型バッファクラス TSmartBuffer まんまです(笑) TSmartBuffer buf(100); とすれば100バイト分のchar*型バッファを確保し、スコープを抜けるとバッファは解放されます。 本家スマートポインタの簡易版みたいな感じです。僕が今まで作ったプログラムのほとんどで こいつを使ってきているので、それなりに汎用性は高いはずです(^^; ただし本家スマポと違って参照カウンタは実装してないのでオブジェクトで渡さないようにしてください。 buf.New(256); という風にするとコンストラクタ以外でもバッファを確保できます。既存のバッファがあればそいつは 自動的に解放されます。 また、演算子設定(正式な名称は分からないw)をしているので strcpy(buf, "TEST"); というようにchar*として振舞うこともできます。 strcpy(buf+10, "HOGE"); というようにアドレスを加算することもできますが、コンパイラからエラー(ないしは警告) が返ってきたら素直に strcpy(buf.Get()+10, "HOGE"); としてGet()で生ポインタを取得してください(^^; 関数の引数として扱うこともできますが void Hoge(TSMartBuffer buf){} のように実体で渡すと関数の実行・終了時にTSmartBufferのコンストラクタ・デストラクタが実行されて バッファが破壊されてしまうので void Hoge(TSMartBuffer *pbuf){} としてポインタで渡すようにしてください。 参照渡しはやったことがないのでどうなるのか分かりません(たぶん大丈夫だろうと思うけど) また、TSmartBuffer.hの前にstdio.hをインクルードしているとファイルの中身から TSmartBufferを作ったりできます(開始オフセットやサイズの指定も可能) 逆にTSmartBufferの中身をファイルに保存できたりもできます。 かなりやる気のない説明ですが詳しくはTSmartBuffer.hを見てください。