ページ 1 / 1
今まで無視してきた初歩的なこと
Posted: 2013年3月23日(土) 21:37
by weaseve
関数を作って、そこに int a; と入れたとします。
そしてその作った関数を何度も繰り返し使用すると、使用した分だけaという変数が作られるのでしょうか。
int a = 0 ; とするとその関数内でaを0でない値にしても、2回目以降この関数を使うとこの文の後はaが0になっているので、この文が動いていることはわかっているのですが。
Re: 今まで無視してきた初歩的なこと
Posted: 2013年3月23日(土) 21:41
by Foo
こんばんは。
作られるけどスコープを抜けた時点で破棄される、
といった感じだったと思います。
Re: 今まで無視してきた初歩的なこと
Posted: 2013年3月23日(土) 21:46
by softya(ソフト屋)
俗にローカル変数と呼ばれる変数はブロック{}や関数に入るときに生成されて、ブロックや関数を抜けるときに破棄されます。
生成されるときに初期値が書いてあれば、その数値で初期化されます。
Re: 今まで無視してきた初歩的なこと
Posted: 2013年3月23日(土) 21:51
by weaseve
破棄されるんですね。ありがとうございます。もしかして作るだけでなく消す必要があるのかと思ってモヤモヤしていたもので。
Re: 今まで無視してきた初歩的なこと
Posted: 2013年3月23日(土) 21:53
by softya(ソフト屋)
weaseve さんが書きました:破棄されるんですね。ありがとうございます。もしかして作るだけでなく消す必要があるのかと思ってモヤモヤしていたもので。
生成と破棄を自分で全部コントロールする場合にはmalloc()とfree()を使います。
当然ながら破棄を忘れるなどのバグの温床となります。
Re: 今まで無視してきた初歩的なこと
Posted: 2013年3月23日(土) 21:54
by weaseve
解決です。
Re: 今まで無視してきた初歩的なこと
Posted: 2013年3月23日(土) 22:01
by weaseve
softya(ソフト屋) さんが書きました:weaseve さんが書きました:破棄されるんですね。ありがとうございます。もしかして作るだけでなく消す必要があるのかと思ってモヤモヤしていたもので。
生成と破棄を自分で全部コントロールする場合にはmalloc()とfree()を使います。
当然ながら破棄を忘れるなどのバグの温床となります。
そういった関数があるんですね。ちょっと調べてみると面倒な感じでしたが、使いどころがありそうですね。ありがとうございます。