Here's a little more robust approach:
Code:
#include <stdio.h>
#include <stdlib.h>
int* a1 = 0, *a2 = 0;
int buffer_size = 0;
int reset_global_arrays( size_t size )
{
free( a1 );
free( a2 );
if( size == 0 )
{
a1 = a2 = 0;
}
else
{
a1 = realloc( a1, size * sizeof( *a1 ) );
a2 = realloc( a2, size * sizeof( *a2 ) );
if( !a1 || !a2 )
{
reset_global_arrays( 0 );
return 0;
}
}
buffer_size = size;
return 1;
}
void fatal( const char* message, int code )
{
perror( message );
exit( code );
}
int main( void )
{
size_t initial_size = 1024;
if( !reset_global_arrays( initial_size ) )
fatal( "reset_global_arrays", 1 );
// ...do stuff...
reset_global_arrays( 0 );
return 0;
}