Fixed a memory leak in smooth().

This commit is contained in:
2014-02-26 07:53:57 -04:30
parent 1bd8cb07ce
commit 19d2d0fdc5
2 changed files with 23 additions and 9 deletions

9
.gitignore vendored
View File

@@ -16,3 +16,12 @@
*.exe *.exe
*.out *.out
*.app *.app
ds
# Emacs backups
*~
# Output netpbm images
*.pbm
*.pgm
*.ppm

23
ds.c
View File

@@ -179,15 +179,19 @@ void smooth ( int *** map, unsigned int MAP_SIZE) {
for ( j = 0; j < MAP_SIZE; ++j ) { for ( j = 0; j < MAP_SIZE; ++j ) {
avg = 0; avg = 0;
avg += ( * map )[ i ][ j ]; /* I C H
avg += ( * map )[ ( i + 1 ) % MAP_SIZE ][ j ]; * E A D
avg += ( * map )[ ( i - 1 ) < 0 ? MAP_SIZE - 1 : i - 1 ][ j ]; * G B F */
avg += ( * map )[ i ][ ( j + 1 ) % MAP_SIZE ];
avg += ( * map )[ i ][ ( j - 1 ) < 0 ? MAP_SIZE - 1 : j - 1 ]; /* I */ avg += ( * map )[ ( i - 1 ) < 0 ? MAP_SIZE - 1 : i - 1 ][ ( j - 1 ) < 0 ? MAP_SIZE - 1 : j - 1 ];
avg += ( * map )[ ( i + 1 ) % MAP_SIZE ][ ( j + 1 ) % MAP_SIZE ]; /* C */ avg += ( * map )[ ( i - 1 ) < 0 ? MAP_SIZE - 1 : i - 1 ][ j ];
avg += ( * map )[ ( i + 1 ) % MAP_SIZE ][ ( j - 1 ) < 0 ? MAP_SIZE - 1 : j - 1 ]; /* H */ avg += ( * map )[ ( i - 1 ) < 0 ? MAP_SIZE - 1 : i - 1 ][ ( j + 1 ) % MAP_SIZE ];
avg += ( * map )[ ( i - 1 ) < 0 ? MAP_SIZE - 1 : i - 1 ][ ( j + 1 ) % MAP_SIZE ]; /* E */ avg += ( * map )[ i ][ ( j - 1 ) < 0 ? MAP_SIZE - 1 : j - 1 ];
avg += ( * map )[ ( i - 1 ) < 0 ? MAP_SIZE - 1 : i - 1 ][ ( j - 1 ) < 0 ? MAP_SIZE - 1 : j - 1 ]; /* A */ avg += ( * map )[ i ][ j ];
/* D */ avg += ( * map )[ i ][ ( j + 1 ) % MAP_SIZE ];
/* G */ avg += ( * map )[ ( i + 1 ) % MAP_SIZE ][ ( j - 1 ) < 0 ? MAP_SIZE - 1 : j - 1 ];
/* B */ avg += ( * map )[ ( i + 1 ) % MAP_SIZE ][ j ];
/* F */ avg += ( * map )[ ( i + 1 ) % MAP_SIZE ][ ( j + 1 ) % MAP_SIZE ];
avg /= 9; avg /= 9;
@@ -197,6 +201,7 @@ void smooth ( int *** map, unsigned int MAP_SIZE) {
for ( i = 0; i < MAP_SIZE; ++i ){ for ( i = 0; i < MAP_SIZE; ++i ){
memcpy ( ( * map )[ i ], temp[ i ], MAP_SIZE * sizeof ( int ) ); memcpy ( ( * map )[ i ], temp[ i ], MAP_SIZE * sizeof ( int ) );
free ( temp[ i ] );
} }
free ( temp ); free ( temp );