You can dynamically allocate them still. It will just take a fair amount of work in C. Basically the idea is you have to rely on realloc() to grow your "array" size.
See here: realloc
Now we apply that knowledge to a program. Something like
Code:
col_1 = realloc( NULL, sizeof(col_1[0]) * size );
if ( col_1 == NULL ) {
/* bad*/
}
and the same thing for col_2. Then at a certain time when you need more elements you do:
Code:
void *temp = NULL;
size *= 2;
temp = realloc( col_1, sizeof(col_1[0]) * size );
if( temp == NULL ) {
/* bad */
}
col_1 = temp;
And the same thing for col_2 again. You will probably want to roll your own function with this inside, or something else that makes sense. You will use it frequently enough.