メモリの1バイトは血の一滴

フラグの役割、メモリの節約とC言語のデータ型について


これはほとんどお役立ちにもならない話ですが、ストレスの軽減にでも。。

メモリを節約する

 

昔 「メモリの1バイトは血の一滴

    という記述をみて思ったことがありました。

 

戦時中、「ガソリン(油)の1滴は血の一滴」というスローガンがありました。

日本が欧米から石油の輸入を一切止められ、あと半年で石油の備蓄が切れる、というところまで追い込まれ戦争に至ったあたりの悲惨さのある言葉です。
石油が無くなると国中、活動が止まってしまい。。。

 

しかし、時代も変われば変わるもので、今時 ガソリンの1滴は飲み水1滴にも劣ります。。。


ガソリン1リットルより、コンビニで売ってるミネラルウオーター 1リットルの方が高いという時代になりました。

 

フラグのchar型

 

でも、マイコンのメモリも 場合によってそんな風に感じるときがあります。

 

マイコンでメモリに困ったときには、涙ぐましい、容量を削る努力をするようなときがあります。(最近はメモリも安くて豊富になりましたが・・)

昔はPCとかのプログラムでも使用メモリを削らないとけいないということもありました。

 

趣味でやるなら別の大きな種類のマイコンにしてもいいんですが、やはりメモリにガンバルことはあるでしょう.
日頃からメモリも意識しておくのがいいんですが。 もし、仕事などでこんなことになるのは考えただけでもいやですね

 

こうなると本当に メモリの1バイトは血の一滴 のような気持ちになります。

 

しかし普段、PCとかでのプログラムや、、マイコンでも小さなプログラムならメモリなんて湯水のごとく使えるので気にする必要もありません。

 

せせこましく、涙ぐましいメモリ節約の努力をしたあとなどには


単なる1、0を入れるだけのフラグの変数を

 int flag = 1
 long flag = 1

 

   と わざわざ大きめの変数型に入れる。。。

 

プログラムでフラグをつくることはよくありますが、C言語では unsigned char がよく使われます。


フラグは単なる印なので 1,0 だけあればいいので、簡単に最小の変数型が使われます。

 

フラグは 1,0 だけいれるので 最小変数型で十分なのですが、

メモリ節約のせせこましい作業のあと、

 

これを16ビットや32ビットの変数に入れると、

なんだか


32人部屋に、ひとりで大の字になって寝ころんでいるようで、スーとするのです

こういう習慣がつけば困りものですが、意味もなく大きな変数型に入れたくなることがあります。

 

また、試しに作るようなときは変更を繰り返すので、そのときはいいと思った小さな変数型に入れていると、様々な変更でどこかの変数が桁あふれをおこし、その原因を見つけるのに手間取ったりすることもあります。

 

だから普段、バンバン大きめの型を使っていると気持ちがいいような気にもなります(笑)

 

値段を気にせずバンバン買い物をするとストレス解消になるといいますが

 こういうササイなメモリの贅沢でも、プログラムをしながらストレス解消になるでしょう。。 (やっぱり なるわけないでしょうか?)

 

でも、日ごろから心がけるなら、フラグの1,0(True、Folse)でも1byteで8コに入れる。。のようなセセこましい作業になります

 

C言語の整数型について

・int はその処理系の最も適当な大きさになる。
HEW、GCCでは2byte (shortと同じ)
short 2byte
long  4byte
・char 
コンパイラHewでは char → signed char に扱われる
コンパイラGCCでは char → unsigned char のようです(GNU説明書によるとオプションによっても変えられる

 

通常H8 GDLに-fsigned-char のオプション が入っているが、知らぬ間に抜けていると unsigned charになる)
  ANSIの規格ではどちらか不定。 つまり処理系により異なる
  (しかし、多くは char → signed char)

 

  • facebook
  • twtter
  • google+
  • hatena