Перераспределение указателей на структуру
У меня проблема с пониманием этого, мой код ниже:
#include <stdio.h>
#include <stdlib.h>
typedef struct mee test;
typedef struct aa fill;
struct aa {
int c;
fill *point;
};
struct mee {
char name;
fill **a;
int b;
};
static fill **store;
static fill *talloc(int tsize);
static int mem;
static int ptr;
static fill *talloc(int tsize)
{ int temp;
temp = ptr;
ptr++;
mem = mem + tsize;
store = realloc(store, mem*sizeof(fill));
store[temp] = malloc(sizeof(fill));
return store[temp];
}
int main() {
test *t;
t = malloc(sizeof(test));
t->a = malloc(sizeof(fill *)*10);
printf("where\n");
for(int i= 0; i < 10; i++) {
t->a[i] = talloc(1);
}
printf("%d\n", store[9]->c); //Problem here
return 0;
}
извините за ужасные имена, просто тестовый код для более крупного проекта. Этот код компилируется и работает нормально. если я установлю код:
printf("%d\n", store[9]->c);
store [0-7] Я получаю 0 в качестве вывода, хотя почему 8-9 дает мне какое-то бессмысленное отрицательное число? Я предполагаю, что потеря это указатель где-то. Как я могу это исправить?
Для некоторого фона, это хранить указатели для структурирования в массиве, так что позже я смогу намного легче их освободить.