Meyers の本 (項目 2 "Prefer const to #define) を読んで、以下にリストするいくつかの文を理解したいと思います。
#define ASPECT_RATIO 1.653
とconst aspect_ratio = 1.653
Meyersの比較を参照して、 「... 浮動小数点定数の場合 (この例のように)、定数を使用すると、 を使用するよりもコードが小さくなる可能性があり#define
ます。」質問は次のとおりです。コードが小さいと、マイヤーズは実行可能ファイルのディスク上のスペースが小さくなることを意味しますか? 小さいのはなぜですか?int
この場合、 (またはポインター)には4バイトと2倍の8バイトが必要なため、これは32ビットのシステムで有効である可能性があると思いました。シンボル テーブルに入力されない可能性があるためASPECT_RATIO
、名前は値に置き換えられますが、それ以外の場合は、const
一意の double 値へのポインター。この場合、この概念は 64 ビットのマシンでは有効ではなくなります (ポインターと double は同じバイト数であるため)。私が言いたいことをうまく説明したかどうかわかりませんが、特にこの考えが正しいかどうかはわかりません。それから Meyers は次のように尋ねます: " ...良いコンパイラは
const
(オブジェクトへのポインタまたは参照を作成しない限り) 整数型のオブジェクト用のストレージを確保しませんが、ずさんなコンパイラはそうかもしれませんし、あなたはそのようなオブジェクトのためにメモリを確保しようとはしないかもしれません。オブジェクト...」この文脈では、メモリは実行中のプロセスによって占有されているRAMですか?これを確認するのが正しければ、タスク マネージャー (Win の場合) またはトップ (Linux の場合) を使用できますか?