Code:
int foo(int** array)
{
int i;
for(i = 0; i < 8; i++)
{
int *temp = malloc(0);
temp = (int*) realloc(*array, (i+1)*sizeof(int));
if(temp != NULL) *array = temp;
else
{
free(temp);
return -2;
}
array[i] = (int*) i;
printf("%d - %d - %d\n", i, array[i], array);
printf("%08X %08X %08X %08X %08X %08X %08X %08X\n", *array, *(array+1), *(array+2), *(array+3), *(array+4), *(array+5), *(array+6), *(array+7));
free(temp);
}
}
int main()
{
int *a = malloc(0);
int g_i;
foo(&a);
for(g_i = 0; g_i < 8; g_i++)
printf("%d - %d\n", (int*) a, (int*) a[g_i]);
}
Output:
Code:
0 - 0 - 0023FF74
00000000 0023FFB0 004011E7 00000001 00032468 00032B08 00404000 0023FFA4
1 - 1 - 0023FF74
000324D0 00000001 004011E7 00000001 00032468 00032B08 00404000 0023FFA4
2 - 2 - 0023FF74
000324D0 00000001 00000002 00000001 00032468 00032B08 00404000 0023FFA4
3 - 3 - 0023FF74
000324D0 00000001 00000002 00000003 00032468 00032B08 00404000 0023FFA4
4 - 4 - 0023FF74
00032508 00000001 00000002 00000003 00000004 00032B08 00404000 0023FFA4
5 - 5 - 0023FF74
00032508 00000001 00000002 00000003 00000004 00000005 00404000 0023FFA4
6 - 6 - 0023FF74
00032548 00000001 00000002 00000003 00000004 00000005 00000006 0023FFA4
7 - 7 - 0023FF74
00032548 00000001 00000002 00000003 00000004 00000005 00000006 00000007
00032548 - 206152
00032548 - 196984
00032548 - 131200
00032548 - 5046350
00032548 - 1599557448
00032548 - 1096041796
00032548 - 1163282770
00032548 - 3818301
These are my 2 problems. In memory array[0] is never 0. And with applying your fix a[i] does not point to the memory I have written to.
I am so confused :S