プログラムの仕様に詳しい人おったら教えてほしい。

変数を宣言して値を放り込むためのメモリ領域を確保するとする。その際のメモリ領域は変数が取り得る最大の桁数の値が入るだけの容量を確保してしまうのか?もしくは必要になったとき都度ダイナミックにメモリを確保してくれるのか。

条件分岐のための値を放り込むブーリアンを使わずに正数型(中身は0or1の2値的にしか使わない)とか文字列型(TrueもしくはFalseという文字列をいれる)を使ってるんだがメモリの無駄遣いかなやっぱ。