From 64230342b4674f0dafbf9a774d9a7c73094b50ac Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Tue, 30 Nov 2010 13:31:53 +0100 Subject: [PATCH] improved memory householding --- bin/conway | Bin 21444 -> 21204 bytes src/conway.c | 28 +++++++++++----------------- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/bin/conway b/bin/conway index ecf4f96aca25c2dfe47208d6ccfe2622aac187db..df0302a3faf9c10af9ce3e22e1a4cbfcc46a2a28 100755 GIT binary patch delta 5814 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 delta 6019 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 SKPZqpX&`;{mSN9Kp8h}4wyq)o diff --git a/src/conway.c b/src/conway.c index 954c73f..81f394a 100644 --- a/src/conway.c +++ b/src/conway.c @@ -78,16 +78,6 @@ uint8_t ** create_world(uint8_t width, uint8_t height) { return world; } -/* free memory for world */ -void destroy_world(uint8_t ** world, uint8_t width) { - uint8_t a; - - for (a = 0; a < width; a++) { - free(world[a]); - } - free(world); -} - /* insert pattern at (x|y) into world */ void inhabit_world(struct pattern pattern, uint8_t x, uint8_t y, uint8_t ** world) { uint8_t a, b; @@ -236,14 +226,14 @@ int main(int argc, char * argv[]) { struct cursor cur = {0, 0}; int generation = 0, input, framerate = 17; - uint8_t width, height, paused = 0; + uint8_t width, height, paused = 0, a, b; + uint8_t ** worlds[2], ** world; /* initialize world */ getmaxyx(win, height, width); - uint8_t ** worlds[2] = { - create_world(width, height), /* current generation */ - create_world(width, height) /* next generation */ - }, ** world = worlds[0]; + for (a = 0; a < 2; a++) + worlds[a] = create_world(width, height); /* current generation */ + world = worlds[0]; inhabit_world(patterns[3], width/2, height/2, worlds[0]); /* simulation loop */ @@ -336,8 +326,12 @@ int main(int argc, char * argv[]) { } /* householding */ - destroy_world(worlds[0], width); - destroy_world(worlds[1], width); + for (a = 0; a < 2; a++) { + for (b = 0; b < width; b++) { + free(worlds[a][b]); + } + free(worlds[a]); + } endwin(); /* exit ncurses mode */