How can I have large global variables that don't take up space in my program file?

Previous Memory, C Variables, and Pointers Next

Q: I would like to have a global screen buffers which need to be allocated dynamically (to avoid wasting space in the program). The problem is that global variables must be initialized. In your programs, you define the buffer in the _main function, but then they are not available in the other functions. Is there a way to make "global" non-initialized screen buffers?
A: Declare a pointer initialized to NULL, then at the beginning allocate the buffer with malloc. For example, do this:
#include <tigcclib.h>
...
void *buff;  // Buffer pointer
...
void _main(void)
{
  ...
  buff = malloc (LCD_SIZE); // Alloc buffer, make "buff" point to it
  if (!buff) ...            // Do some error handling (no memory)
  LCD_save (buff);
  ...
  LCD_restore (buff);
  free (buff);
}
Simple?