藤原順一のブログ

彼が過ごした日々をこちらに綴る

自分なりにスマートポインターを実装してみた (その1)

最終更新: 2020/8/28 22:33:00
普段、ダイナミックメモリーを割り当てるとき、mallocとかcallocとか使わなくちゃいけないのが決まりだった。そして、用が済んだあとfreeでメモリーを返さなくちゃいけない。そろそろ、面倒くさく感じてしまった。
できればこのようにコードを書いてみたい
int marks[100]
そのために、自分なりにスマートポインターを実装してみた。まず、スマートポインターはアプリケーションにおけるポインターを自動的に管理してくれるもの(間違ったかもしれないが)。例えば、以下のコードにある配列は関数が実行したあと自動的に削除されます。
void something(){
int marks[100];
.....
}
でもこのような書き方では配列のサイズは定数じゃなければなりません。でも、mallocを使うと面倒だし。なので、一度このような書き方を書けるようにするのテンプレートクラスを書くことになった。そして今後、リークを気にせず書くことができる。
これを書くために、私はヒープではなくスタックに割り当てられたオブジェクトを使った。(スタックに割り当てられたオブジェクトはブロックの末端に到達すると自動的に削除されますから)。説明しても伝わらないと思うのでコードだけはこっちに残しておく
template<class T>
class SmartPointer{
public:
T obj;
SmartPointer(size_t size):obj((T)malloc(size*sizeof(T))){};
~SmartPointer(){if(obj)free(obj);};
};
タグ: 開発プログラミングCPPスマートポインター
<<次の記事前の記事へ>>

作者について

藤原順一

藤原順一

2000にマレーシアで生まれ男で現在デジタルマルチメディアを勉強しています