タグ

実行サイズに関するgigs123のブックマーク (2)

  • 蛭子屋本舗 Windowsプログラミングチップス - 実行モジュールのサイズを小さくする(C++編)

    実行モジュールのサイズを小さくする(C++編) 『実行ファイルサイズを減らす方法』を読んで作成される実行ファイルのサイズの違いに驚きましたが、そのまま使用していたのではC++の恩恵があまり得られませんでした。特にグローバルに宣言した変数のコンストラクタやデストラクタが走らないのは結構辛い。 もともとのLIBCではどのようにしているのかを調べて見ると、どうやら".CRT"というセクションには初期化するための関数へのポインタが入るようです。またグローバルに宣言された変数のデストラクタは atexit という標準関数によって終了時に実行される関数に登録されます。この二つをサポートしてやることによりC++を使用していてもモジュールサイズをかなり小さくすることができます。 typedef void (__cdecl* vfuncv)(void); // VCではこれらのセグメントに初期化処理を行う関

  • 実行ファイルサイズを減らす

    窓プログラムをしていて どうして窓の実行ファイルはこんなにでかいんだ と思ったことはないでしょうか? ここでは、そんな悩みを制限付きですがかなえてみます。 まずは、その制限から 1.シングルスレッドプログラムである。 2.API以外は使わないほうがいい。使うとかなりサイズが増える。(stdio.hもだめ!) 3.VC++でしかできない(BC++での方法もあるけど少し難しい) この3つです。 まあ、1つ目の制限については、マルチスレッドプログラムはそう作らないと思うので殆ど問題はないと思います。 ただ、2つ目に関しては、DOS時代からCを使ってる人にはつらいかもしれません。 しかし、Cで出来たことはほとんどどAPIで出来るので、APIの勉強だと思って下さい。ただ、memcpyなどはAPIにない(CopyMemoryっていうのがあるが、あれは実はmemcpyを呼んでる)ので使わざるをえないです

  • 1