12章 newとdelete
http://www.geocities.jp/ky_webid/cpp/language/012.html
C++ではmallocの変わりにnewとdelete演算子を使います。
簡単に言えばnewがmallocでfreeがdeleteみたいなもんです。
#include <iostream> int main () { int *p; p = new int(); *p = 123; std::cout << *p << std::endl; delete p; return 0; }
new int()と書くことでmalloc(sizeof(int))と書くのとほぼ同義です。
また、freeの代わりにdeleteと書くようにします。
わざわざsizeofしなくてもいいので便利ですね。またコンストラクタやデストラクタが呼ばれるのも良いですね。
また配列のメモリ確保もnew演算子で出来ます。その場合はdelete演算子の使い方がちょっと変わります。
#include <iostream> int main () { int *p; int i; p = new int[10]; for (i=0;i<10;i++) { p[i] = i; std::cout << p[i] << std::endl; } delete [] p; return 0; }
$ main 0 1 2 3 4 5 6 7 8 9
配列の場合はこのが必要となります。