Перераспределение указателей на структуру

У меня проблема с пониманием этого, мой код ниже:

#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 дает мне какое-то бессмысленное отрицательное число? Я предполагаю, что потеря это указатель где-то. Как я могу это исправить?

Для некоторого фона, это хранить указатели для структурирования в массиве, так что позже я смогу намного легче их освободить.

0 ответов

Другие вопросы по тегам