大家好!
我正在尝试用 C 制作一个 ascii 俄罗斯方块。
但是我对指针的经验还不是很丰富,所以我想问一下我是否正确创建了这些函数,分配和释放内存(这意味着它们不会留下内存泄漏)。
这是我用来创建俄罗斯方块板的函数:
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
程序上一切正常,我只是想确保我不会乱扔人们的内存……你能检查我的方法吗?