序論

どうでもよさそう…。

ギガチュウ: 正しいコード…
ギガチュウ: 今はこの、にとりの河登りのソースコードを参考にしていますけど……
yappy: ざわ…
yappy: おれもあまりC++コードは見る機会がないけど…
yappy: Brightmoon - Touhou Archive Extractor

    • Brightmoon?

東方Project作品(と幾つかの別作品)のアーカイブファイルを閲覧、抽出することが
出来るGUIアプリケーションです。
みょんなエラーが出るかもしれませんが、そこはご愛嬌ということで……
yappy: これとかどうですかね
ギガチュウ: お、ニコ動投稿者御用達のアレですね
yappy: -- src.zip?
Brightmoonのソースコードをzip圧縮したものです。ビルドにはboostが必要です。
ギガチュウ: くそいー
yappy: ソース読むだけなので…
yappy: 少々危険ですが確か私の評価は高かったはず
ギガチュウ: 全ゲ連のBoost紹介講演のスライド見てるんですけど
ギガチュウ: この講演の対象

◎Boostを使ったことがある
STLを使ったことがある
○テンプレート含むC++の言語機能をある程度理解できる
C++でプログラムを書いている
×C++は書かない

多分こんな感じ
yappy: 残当
ギガチュウ: って書いてあって完全に△だった…
yappy: 下の方への話ってしてても自分が面白くないですからね…
yappy: ぱっと見boostへの依存は多くなさそうですよ
yappy: つーかどこに使ってるんだ…
yappy: あーscoped_arrayか
まだ0xでなかった頃のスマートポインタだけは使いたかったパターンですね…
ギガチュウ: スマートポインタ…
ギガチュウ: ポインタは今のところ一箇所しか使ってないです
ギガチュウ: int WINAPI WinMain( … )
{
Game *game;
game = new Game;
game -> mainLoop();
delete game;
return 0;
}
yappy: それにとりっていうんですよ…
yappy: 弱キャラです
ギガチュウ: ^^^^^^^^^^^^^^
yappy: Game game;
game.mainLoop();
return 0;
yappy: これがアリスです
ギガチュウ: あ、それ!
ギガチュウ: 最初はそう書いてたんですよ
yappy: Game game;
でコンストラクタ呼ばれるんですよ
yappy: WinMainからリターンするとデストラクタ呼ばれるんですよ
yappy: おわり
ギガチュウ: Game *game = new Game;
だとそういうのは呼ばれないんですか
yappy: 呼ばれますよ
ギガチュウ: deleteのタイミングで呼ばれるとkかですか?
yappy: newはそのクラス(構造体)の大きさのメモリを確保して、その後そこに対してコンストラクタを呼びます
yappy: deleteはそこに対してデストラクタを呼んだ後、さらにメモリを解放します
yappy: メモリの動的確保と解放は重いからむやみに使うのは厳禁ですよ
ギガチュウ: そうなんですか…
ギガチュウ: 僕の手元にある『これならわかるC++』には「実は、newとdeleteをきれいに使いこなすことは、C++屋の腕の見せ所のひとつなのです。」って書いてあったので…
ギガチュウ: てっきりnewを使ったほうが賢いのかと…
yappy: newとdeleteは使えば使うほどメモリリークのバグを増やすので
yappy: スマートポインタを使うというのが闇の軍団のセオリーですね…
ギガチュウ: new→メモリ確保→コンストラクタ呼び出し
delete→デストラクタ→メモリ解放
ギガチュウ: という流れはわかりましたけど、
ギガチュウ: Game game; だとどういう流れになるんですか?
yappy: まずは int とか struct とかと同じ感じで捉えてください
yappy: まずはメモリっすね
ギガチュウ: 型 ってやつですか…
yappy: ローカル変数ならスタックに、グローバル変数なら静的領域とかなんとかいうところに取られます
ギガチュウ: でたーメモリの領域
ギガチュウ: ちょっと待って下さいね…
yappy: ローカル変数 int i; がスタック上に4バイトと同じ感じで、自作クラスのサイズで取られるってことです
yappy: 最初からほとんど場所が決まっているようなものなので、
yappy: 実行時にnew用のヒープ領域からNバイト連続して空いているところを検索するnewとはえらい違いですね…
ギガチュウが2013-02-23 23.03.20-1.jpgを送信しました
ギガチュウ: これ
yappy: デター
ギガチュウ: 『14歳からはじめる わくわくC言語ゲームプログラミング教室』
yappy: ばろす
ギガチュウ: 高校時代からページを開いてはあまりのクソさに本を投げ捨てるのを6年間繰り返す程度には愛読ています
yappy: やはり知っているとかなり違うから説明しておくか…
ギガチュウ: おにゃしゃす><


なんやこの意味のないdisり
newとdeleteの練習は必要ですよ