こんにちは、みんな!
Cでアスキーテトリスを作ろうとしています。
ただし、ポインターについてはまだあまり経験がないので、これらの関数を作成、割り当て、メモリを正しく解放したかどうか (メモリ リークを残さないことを意味します) をお尋ねしたいと思います。
これは、テトリス ボードを作成するために呼び出す関数です。
char** InitTetris( int size_x , int size_y )
{
/*
InitTetris allocates memory for the tetris array.
This function should be called only once at the beginning of the game.
*/
//Variables
int i;
char** tetris = NULL;
//Allocate memory
tetris = ( char** ) malloc ( size_x * sizeof ( char* ) );
for ( i = 0 ; i < size_x ; i++ )
{
tetris[i] = ( char* ) malloc ( size_y * sizeof ( char ) );
}
return tetris;
}//End of InitTetris
そして、これはメモリを解放する関数です:
void ExitTetris ( char** tetris , int size_y )
{
/*
This function is called once at the end of the game to
free the memory allocated for the tetris array.
*/
//Variables
int i;
//Free memory
for ( i = 0 ; i < size_y ; i++ )
{
free( tetris[i] );
}
free( tetris );
}//End of ExitTetris
別の関数から処理されるすべて
void NewGame()
{
//Variables
char** tetris; /* Array that contains the game board */
int size_x , size_y; /* Size of tetris array */
//Initialize tetris array
tetris = InitTetris( size_x , size_y );
//Do stuff.....
//Free tetris array
ExitTetris( tetris , size_y );
}//End of NewGame
プログラムはすべて正常に動作します。人々の RAM を散らかさないようにしたいだけです。方法を確認していただけますか?