いちばんやさしいゲームの作り方

文系の人でも、数理学がわからない人でもゲームプログラミングをマスターできるブログ

「やってはいかんとわかっていても、それをやったときのエラーを確認しろ」というのが師匠流なのですが、 shared_ptr でそれをやろうとしてうまくいきません。

#include <iostream>

#include <boost/smart_ptr/shared_ptr.hpp>


class aClass
{
public:
  aClass()
  {
    std::cout <<"Created !" <<std::endl;
  };
  ~aClass()
  {
    std::cout <<"Deleted !" <<std::endl;
  };
};

int main(int argc, char* argv[])
{
  aClass *rawPtr = new aClass();

  boost::shared_ptr<aClass> ptr1(rawPtr);
  boost::shared_ptr<aClass> ptr2(rawPtr);

  return 0;
}

書籍によるとこれは失敗例らしく、自分もそう思います。最後に同じ領域が2回 delete されそうな気がします。ただ、手持ちの環境では不正終了などもなく、デストラクタが2回実行されて終わりました。 Windows って不要なメモリを回収するのが早いような印象があったのですが、メモリの残滓だけでもデストラクタが動くのでしょうか。

関数とか、スコープを違えると不正終了するかも…

Contributions




Trackback URL

メルマガ登録・解除
 
挫折不可能!初級ゲームプログラミング完全マニュアル
RSS track feedいちばんやさしいゲームの作り方 カウンター
ブログSEO対策:track word あわせて読みたい SEO STATUS