C言語 入門 小学生でもわかるC言語3

十三日目 メモリ確保

「わかりやすく!」がテーマです!

HOME/小学生でもわかるC言語3 目次/十三日目 メモリ確保/

広告

↓2016年02月29日発売↓

12歳からはじめる ゼロからのC言語 ゲームプログラミング教室

新品価格
¥2,462から
(2016/5/10 22:16時点)

もっと!C、C++言語本

目次へ戻る

?と思ったら

わからなそうな用語集

プログラム実行中のメモリ確保

今までのプログラムではメモリ確保は

int suji;
char moji;
int hairetu[20][20];

のように最初から大きさを決めて確保してました。

しかしこれだと配列の一つの要素しか仮に使われない場合も関係なく確保したメモリは変わらないので残りの部分が全てムダになってしまいます。

こんな時に自由にメモリを確保したり解放したりできれば便利ですよね。

そんなプログラム実行中でのメモリ確保についてみていきましょう。

malloc

メモリ確保の関数の代表的な関数に「malloc()」と「calloc()」があります。

まずは「malloc()」を紹介します。

/*プログラム32*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main(){
	char *p;
	p = (char *)malloc(sizeof(char) * 256);
	if(p == NULL)exit(1);

	sprintf(p, "%s", "hello world");
	printf("%s\n",p);
	free(p);
	
	return 0;
}

■実行結果■

実行結果(i-13-1)

確保したい型(intとかcharとか)のポインタを用意してそこに「malloc()」で確保したメモリアドレスを保存します。

char *p;
p = (char *)malloc(sizeof(char) * 256);

この場合は「char」型を256個なので256バイト用意したという事になります。

そしてそれを型キャストして用意したポインタで受け取ります。

型キャストっていうのは一時的にその型に合わせる事でこの場合は先頭に(char *)とつける事で「char」型のポインタに合わせてという意味になります。

「int」型のポインタに合わせる場合は(int *)のようにします。

そしてファイル操作の時と同じでメモリ確保に失敗した場合のエラー処理をします。

if(p == NULL)exit(1);

そしてエラーがでなければメモリ確保は成功になりますのでメモリとして使う事ができます。

今回は「sprintf()」関数を使って中身に文章を保存してみました。

これは「printf」の出力先をメモリにしたようなモノで

sprintf(用意したメモリのポインタ, "%s", "文章");

のように使います。

そして「malloc()」して確保した使い終わったメモリは必ず解放しなければいけないので

free(p);

「free()」関数を使ってメモリを解放します。

calloc

次はもう1つの「calloc()」になります。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main(){
	char *p;
	p = (char *)calloc(256,sizeof(char));
	if(p == NULL)exit(1);

	sprintf(p, "%s", "hello world");
	printf("%s\n",p);
	free(p);
	
	return 0;
}

■実行結果■

実行結果(i-13-2)

最初にいくつ分メモリを確保するのか指定して、後にその確保するサイズの基準を指定します。

「malloc()」の反対になったみたいなものでほとんど同じですね!

それでは次回はビットレベルでの計算、論理演算(ろんりえんざん)について見ていきましょう。

次回

最終日 論理演算

□ページの先頭へ□

□目次へ戻る□

広告

↓2014年06月20日発売↓

14歳からはじめるC言語わくわくゲームプログラミング教室 Visual Studio 2013編

新品価格
¥2,500から
(2016/5/10 22:17時点)

↓2014年10月25日発売↓

超本格! サンプルで覚えるC言語 3Dゲームプログラミング教室

新品価格
¥3,110から
(2016/5/10 22:18時点)

↓2013年07月25日発売↓

小学生からはじめるわくわくプログラミング

新品価格
¥2,052から
(2016/5/10 22:21時点)

↓2016年05月13日発売↓

小学生からはじめるわくわくプログラミング2

新品価格
¥2,052から
(2016/5/10 22:22時点)

もっと!C、C++言語本