- ゲームプログラム入門:C言語「たくさんのメモリを使う時の基礎」のご紹介
- C言語「たくさんのメモリを使う時の基礎」のご紹介
- 「シューティングゲームの作り方/自作」関連ページのご紹介
- シューティングゲーム・関連ページのご紹介
- 歴代名作シューティングゲームのご紹介|まとめ
- 歴代シューティングゲーム全ゲームタイトル一覧のご紹介|まとめ
- シューティングゲームの人気シリーズのご紹介
- シューティングゲーム関連ページのご紹介|まとめ
- シューティングゲーム解説ページのご紹介|まとめ
- シューティングゲーム・ハード関連(周辺機器)のご紹介|まとめ
- シューティングゲーム雑誌/書籍関連のご紹介|まとめ
- 【TPS名作・傑作・まとめ】TPS傑作・名作・全ゲームタイトルのご紹介│まとめ│~トゥームレイダー│バイオハザード│アンチャーテッドなど~
- 【名作RPG】RPGのご紹介│まとめ│
- 【TOP:SLG】おすすめ名作シミュレーションゲームのご紹介
- 【TOP】レースゲーム関連(おすすめ名作・評価ランキン)のご紹介
- TOP【おすすめスポーツゲーム】のご紹介~MLB,NBA,NFL,FIFAなど~
- 【TOP】パズルゲームのご紹介
- 【ゲームランキング】世界・国内で最も売れたゲームランキングのご紹介
- 名作ゲームのご紹介│まとめ│家庭用ゲーム・PC・アーケードなど
- 【機種別ゲームTOP】PC・家庭用・アーケードゲーム・周辺機器のご紹介
- ジャンル別ゲームタイトルのご紹介│まとめ│
- 【ゲームTOP】ゲーム関連ページのご紹介
- 【書籍・雑誌TOP】書籍・雑誌サイトマップ関連ページのご紹介
- 【ホビーTOP】ホビーサイトマップ関連ページのご紹介
ゲームプログラム入門:C言語「たくさんのメモリを使う時の基礎」のご紹介

ご訪問ありがとうございます。
今回は、ゲームプログラム入門:C言語「たくさんのメモリを使う時の基礎」をご紹介します。
「シューティングゲームの作り方/自作」関連サイトマップのご紹介

「シューティングゲームの作り方/自作」関連をご紹介します。
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
C言語「たくさんのメモリを使う時の基礎」のご紹介

たくさんのメモリを使う時は、いきなり大きな配列を用意せず、プログラム中で用意した方が賢明です。
動的なメモリ確保

変数や配列を宣言すると「自動的に」メモリ上にそれらの領域が確保されます。しかし、この方法だと画像を扱うプログラムなど、たくさんのメモリを用意する必要がある場合、最悪、プログラムが止まってしまう危険性があります。
静的(スタティック)なメモリ確保

これを静的(スタティック)なメモリ確保といいます。
「プログラムの処理として(動的(ダイナミック))」メモリを確保

このような時は、次のように「プログラムの処理として」メモリを確保します。これを動的(ダイナミック)なメモリ確保といいます。
「プログラムの処理として」のメモリを確保手順
「プログラムの処理として」のメモリを確保手順 | |
【1】 | ポインタを用意する |
【2】 | メモリを確保し、先頭のアドレスを用意しておいたポインタに格納する。 |
【3】 | いらなくなったら、自分でメモリを解放する |

▼ポインタはNULLにしておくとよいでしょう。
メモリ活用の手順

動的なメモリ確保を行う時に使う関数を紹介します。尚、これらの関数を使う時は、プログラムの先頭で「#include 」と「#include 」及び「#include 」とする必要があります。
メモリ活用の手順 | |
メモリの確保 |
メモリを確保し、用意しておいたポインタに先頭アドレスを格納します。
|
メモリの利用 |
確保してしまった後は、通常の配列と同じように使えます。
|
メモリの解放 |
使い終わったら、メモリを解放します。
|
メモリの確保

メモリを確保し、用意しておいたポインタに先頭アドレスを格納します。
//確保したメモリの先頭アドレスを入れるポインタを宣言します。
short *buf;
// (short*):malloc()関数の戻り値には型がない(void*型)ので、bufと同じ型にキャストします。
// malloc()関数:引数で指定したバイト数のメモリを確保し、その先頭アドレスを返します。
buf = (short*)malloc(sizeof(short)*2000);

▼確保後の用途に合わせて、ポインタを用意します。
「malloc()関数」について

「malloc()関数」は、引数で指定したバイト数のメモリを確保し、その先頭アドレスを返します。(確保できなかったときはNULLを返します。)
メモリの利用

確保してしまった後は、通常の配列と同じように使えます。
buf[2] = 40;
メモリの解放

使い終わったら、メモリを解放します。
//free()関数:確保したメモリを解放します。
free(buf);
「free()関数」について

確保したメモリを解放します。
大量のメモリを扱うときに便利な関数

大量のメモリを扱うときに便利な関数を紹介します。
メモリ確保関係の関数

malloc()関数の代わりに、次のような関数を使うこともできます。
メモリ確保/操作関係の関数 | |
calloc()キャロック |
メモリを確保し、要素をすべて0に初期化する。
|
realloc()リアロック |
一度確保したメモリを違うサイズで確保し直す。
|
memset() |
メモリの内容をすべて同じ値に設定する。
|
memcpy() |
メモリの内容をコピーする
|
calloc() キャロック:メモリを確保し、要素をすべて0に初期化する
//「buf」確保したメモリの先頭アドレスを格納
// 「sizeof(char)*20」確保するメモリのバイト数
buf = (char*)calloc(sizeof(char)*20);
realloc()リアロック:一度確保したメモリを違うサイズで確保し直す
//「buf」新しいメモリ領域の先頭アドレスを格納
//「realloc(buf, 」以前のメモリ領域の先頭アドレス
//「sizeof(char)*15」新しく確保するメモリのバイト数
buf = (char*)realloc(buf, sizeof(char)*15);

▼確保場所は変わってしまうかもしれません。
メモリ操作関数

メモリの内容を操作するときに便利な関数を紹介します。なお、これらの関数を使う時は、プログラムの先頭で「#include 」とする必要があります。
memset()メムセット:メモリの内容をすべて同じ値に設定する
//「buf」メモリ領域の先頭アドレス
//「0」設定する値
//「5」値を設定するメモリのバイト数
memset(buf, 0, 5);
memcpy()メムコピー:メモリの内容をコピーする
//「dst」コピー先メモリ領域の先頭アドレス
//「src」コピー元メモリ領域の先頭アドレス
//「5」コピーするメモリのバイト数
memcpy(dst, src, 5);
▼「メモリ確保/操作関係の関数を利用したサンプル文」のご紹介
#include
#include
#include
#include
main()
{
char *b;
char a[4] = {20, 40, 30, 10};
b = (char *)malloc(sizeof(char) *200);
//メモリが確保できなかった時のチェックを必ず行います。
//main()関数を終了し、何も処理しません。
if(!b)
return;
memcpy(b, a, sizeof(char) *4);
printf( "%d %d %d %d\n", b[0], b[1], b[2], b[3]);
free(b);
}
実行結果
20 40 30 10
「シューティングゲームの作り方/自作」関連サイトマップのご紹介

「シューティングゲームの作り方/自作」関連をご紹介します。
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
「シューティングゲームの作り方/自作」関連ページのご紹介

「シューティングゲームの作り方/自作」関連ページをご紹介します。
【STG】シューティングゲーム・サイトマップのご紹介

80年から2000年代のシューティングゲームについてご紹介します。
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
シューティングゲーム・関連ページのご紹介

シューティングゲーム・関連ページをご紹介します。
歴代名作シューティングゲームのご紹介|まとめ

歴代シューティングゲーム全ゲームタイトル一覧のご紹介|まとめ

シューティングゲームの人気シリーズのご紹介

シューティングゲーム関連ページのご紹介|まとめ

シューティングゲーム解説ページのご紹介|まとめ

シューティングゲーム・ハード関連(周辺機器)のご紹介|まとめ

シューティングゲーム雑誌/書籍関連のご紹介|まとめ

【ゲームジャンル別】サイトマップのご紹介

【ゲームジャンル別】サイトマップをご紹介します。
ゲームジャンル別サイトマップ | ||||
ゲームTOP > ランキング│傑作・名作│機種別│ジャンル別 |
||||
ゲームジャンル別TOP >関連ページ│名作│ランキング | ||||
【ジャンル別関連ページ】 アクション系(プラットフォーム│対戦アクション│FPS│TPS│STG│フライト)|AVG│RPG│SLG│レース│スポーツ│パズル│テーブル |
||||
【アクション】プラットフォーム│対戦アクション│FPS│TPS│STG│フライト 【アドベンチャー】AVG│ 【RPG】RPG│SRPG│ARPG 【SLG】SLG│ストラテジー│ターン制SLG│RTS 【レース】レース 【スポーツ系】スポーツ│プロレス 【パズル】 【テーブル】麻雀 |
||||
【ジャンル別】おすすめ評価ランキング アクション│AVG│RPG│SLG│レース│スポーツ│パズル│テーブル |
||||
【歴代傑作・神ゲー(2021~1996年)】99~94点│93~92点│91点│90点 ■【アクション系ゲーム】■ アクション│プラットフォーム│対戦アクション│FPS│TPS│フライト│ 【対戦アクション】一覧│98~80点│79~70点 【FPS】まとめ│90点以上│89~86点│85~83点│82~80点 【アドベンチャーゲーム】 ■【RPG系】■ RPG│SRPG│ARPG 【RPG】一覧│傑作(96~90点)│89~85点│84~82点│81~80点│ ■【シミュレーション系ゲーム】■ SLG│ストラテジー│ターン制SLG│RTS│街づくりSLG ■【レース】■ ■【スポーツ系ゲーム】■スポーツ│プロレス ■【パズル】 |
||||
シリーズ・テーマ | ||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
ゲームジャンル別・関連ページのご紹介

ゲームジャンル別・関連ページをご紹介します。
【TPS名作・傑作・まとめ】TPS傑作・名作・全ゲームタイトルのご紹介│まとめ│~トゥームレイダー│バイオハザード│アンチャーテッドなど~

【格ゲー・名作】アーケード・家庭用・格闘ゲームのご紹介~名作(173 本)・全タイトル(1462本)のご紹介

【名作STG】シューティングゲームのご紹介

【AVG】アドベンチャーゲームのご紹介│まとめ│

【名作RPG】RPGのご紹介│まとめ│

【TOP:SLG】おすすめ名作シミュレーションゲームのご紹介

【TOP】レースゲーム関連(おすすめ名作・評価ランキン)のご紹介

TOP【おすすめスポーツゲーム】のご紹介~MLB,NBA,NFL,FIFAなど~

【TOP】パズルゲームのご紹介

ゲームTOPサイトマップ

ゲームTOPのサイトマップをご紹介します。
【ゲームTOP】サイトマップ | ||||
ゲームTOP > ランキング│傑作・名作│機種別│ジャンル別 | ||||
■ランキングTOP > ハード│ソフト(売上(世界│国内)│海外評価) ■傑作・名作ゲームTOP > ■ゲーム機種別TOP > 据置│携帯│AC│PC│周辺機器 ■ジャンル別TOP > アクション系(プラットフォーム│対戦アクション│FPS│TPS│STG│フライト)|AVG│RPG│SLG│レース│スポーツ│パズル│テーブル |
||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
ゲーム関連ページのご紹介

ゲーム関連ページをご紹介します。
【ゲームランキング】世界・国内で最も売れたゲームランキングのご紹介

名作ゲームのご紹介│まとめ│家庭用ゲーム・PC・アーケードなど

【機種別ゲームTOP】PC・家庭用・アーケードゲーム・周辺機器のご紹介

ジャンル別ゲームタイトルのご紹介│まとめ│

コペンギン・サイトマップ

コペンギンのサイトマップをご紹介します。
【コペンギンTOP】サイトマップ | ||||
コペンギンTOP > ゲーム│ホビー│書籍・マンガ│ | ||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
懐かしの名作から最新作までの豊富な品揃え!通販ショップの駿河屋
コペンギンサイトマップ関連ページのご紹介

コペンギン関連ページをご紹介します。
【ゲームTOP】ゲーム関連ページのご紹介

【書籍・雑誌TOP】書籍・雑誌サイトマップ関連ページのご紹介

【ホビーTOP】ホビーサイトマップ関連ページのご紹介
