Hi!
So was macht man mit realloc. Guck dir am besten mal die man-Page zu realloc an (man 3 realloc).
Der Source müsste ungefähr so aussehen:
Code:
#include <stdio.h>
#include <malloc.h>
void init(char ***array)
{
/* Für ein erstes Element */
*array = (char**) malloc(sizeof(char*));
(*array)[0] = (char*)malloc(sizeof(char) * 1024);
snprintf((*array)[0], 1024, "a=0");
}
void modify(char ***array, int flag) /*flag=1: free, flag=0: alloc*/
{
static int oldsize = 0;
static int size = 1; /* Wir haben schon 1 Element */
int i;
switch(flag)
{
case 0:
oldsize = size;
size++;
*array = (char **)realloc(*array, sizeof(char*) * size);
for(i = oldsize; i < size; i++)
{
(*array)[i] = (char*)malloc(sizeof(char) * 1024);
snprintf((*array)[i], 1024, "a=%i", i);
}
break;
case 1:
for(i = 0; i < size; i++)
{
free((*array)[i]);
}
free(array);
break;
default:
break;
}
}
int main()
{
char **array;
int i = 0;
init(&array);
for (i = 0; i < 50; i++)
{
modify(&array, 0);
printf("%s\n", array[i]);
}
/* Speicher freigeben */
modify(&array, 1);
return 0;
}
HTH
c ya,
Tobias
Lesezeichen