malloc関数をつかってメモリを確保した後 free関数を使ってメモリを解放してみよう
malloc関数の説明にとりかかってみよ~
ソーラー「いよいよ C言語を学び始めるときから
ずっと気になっていた
malloc関数の説明だね。
malloc関数を初めてみた時は
なんか重要そうな感じはしたけど
また~く意味が分からなかったんだ。
でも アレサ きみのおかげでここまでやっとこれたんだ」
アレサ「そんなことはないですの
ソーラーさんならきっとここまで自力でたどり着けたと思いますの」
ソーラー「い、いやあ ちょっと 無理~
なんせ みんなと学んでいても
それでも ここにたどりつくまでに
めちゃくちゃまちがえたからね💦
一人だと どうなっていたことか・・・(笑)
さらに まだ
まちがって理解しているところがあるかもしれない・・・
本当 助かったよ」
アレサ「ありがとうございます ソーラーさん」
ソーラー「さあ
それではmalloc関数の説明にとりかかってみようかな。」
アレサ「はいっ ソーラーさん」
ソーラー「
例えば
scanf関数を使って
文字列データを
配列に格納するときのプログラムはつぎのようになります。
🌞 🌞 🌞
scanf関数をVisual Studioで使用するときは
#pragma warning(disable: 4996)
をプログラムの冒頭に忘れずに記述してください
🌞 🌞 🌞
#pragma warning(disable: 4996)
#include <stdio.h>
int main(void){
char hairetu[100];
scanf("%s",hairetu);
printf("%s\n",hairetu);
return 0;
}
ソーラー「このとき
このプログラムをコンパイルして
_
アンダーバーが表示されている
入力待ち受け状態のコマンドプロンプト画面で
nekoとうちこむと
nekoがprintf出力表示されます。
簡単ですね。
ここでは
neko
だけがコマンドプロンプト画面から入力されたけど
もしかしたら
nekonekodaisuki
と文字列データが入力されるかもしれないね。」
アレサ「そうなんですの」
ソーラー「このように
コマンドプロンプト画面から
入力される文字列データの量が不明のときは
このプログラムのように
char hairetu[100];
を宣言します
こうしておけば
最大で
99個の半角英数字とナル文字\0からなる文字列を
scanf関数を使ってメモリに格納することができるんだね。
おおめに配列の要素数をとったというわけなんだ。
char型の配列を使って
char hairetu[100];
が実行されたならば
char型(1バイト)×100個=100バイトのメモリが
コマンドプロンプト画面から入力された
文字列データを受け取るために確保されています。
このメモリが確保された状態は
このプログラムの実行が終了されるまで続きます。
つまり
このプログラムの実行が終了されるまで
コンピュータは
このメモリを使用することはできません。
では次のプログラムをご覧ください
#pragma warning(disable: 4996)
#include <stdio.h>
int main(void){
char hairetu[100];
scanf("%s",hairetu);
printf("%s\n",hairetu);
char str[100];
scanf("%s",str);
printf("%s\n",str);
return 0;
}
コンパイル結果
(Visual Studioの場合)
(EAZY IDECの場合)
neko(と入力すると)
neko
nyaonyao(と入力すると)
nyaonyao
ソーラー「
このプログラムでは
nekoと文字列を入力して
nekoをコマンドプロンプト画面に表示しています
その時点で
char型(1バイト)×100個=100バイトのメモリを
確保している必要はありませんが
char hairetu[100];
により確保された100バイトのメモリは
プログラムの実行が終了されるまで
確保され続け
その間は
その100バイトのメモリは
コンピュータは使用することができません。
そして
char str[100];
が実行されると
さらに
char型(1バイト)×100個=100バイトのメモリが
確保されることになります。
この合計200バイトのメモリは
プログラムの実行が終了されるまで
確保され続け
その間は
その200バイトのメモリは
コンピュータは使用することができません。
このようなことがつづいていくと
どんどんコンピュータは
メモリを使用できなくなるというわけなんだね。
使用できるメモリがなくなると
コンピュータは何もプログラムを実行することができなくなり
フリーズしてしまうというわけなんだ」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます