2008-05-18から1日間の記事一覧

new/delete

C++

deleteしないとプログラムが終了してもデストラクタは呼ばれない、と。 #include <iostream> using namespace std; class Foo { private: int i; public: Foo() { cout << "Foo()\n"; }; ~Foo() { cout << "~Foo()\n"; }; }; int main() { Foo *p = new Foo; return 0;</iostream>…

アドレスをずらして配列をdelete

C++

落ちた。 #include <iostream> using namespace std; class Foo { private: int i; public: Foo() { cout << "Foo()\n"; }; ~Foo() { cout << "~Foo()\n"; }; }; int main() { Foo *p = new Foo[4]; p++; delete [] p; return 0; } Foo() Foo() Foo() Foo() 7 [sig] fo</iostream>…

malloc/free

C++

malloc/freeだとコンストラクタ/デストラクタが呼ばれない、と。 #include <iostream> #include <cstring> using namespace std; class Foo { public: Foo() { cout << "Foo()\n"; }; ~Foo() { cout << "~Foo()\n"; }; }; int main() { Foo *p = (Foo *) malloc(sizeof(Foo)); d</cstring></iostream>…