Так что я эта структураКак я могу динамически обновлять массив внутри структуры?
#define MAX 128
typedef struct this_struct {
Type items[MAX];
int top;
} *SVar;
Допустит, мы создаем что-то вроде этого
SVar first = malloc(sizeof(struct this_struct));
Теперь, когда я нажимаю значение в массив, и он заполняет в MAX, который 128, мне нужно динамически создайте новый массив, но я не знаю, как он находится внутри массива.
Вот мои текущие мысли о том, как я хочу, чтобы это сделать:
- Создание новых имен SVAR "второго" с второго> элементов [MAX * 2]
- бесплатно (первый)
Как я могу это сделать?
UPDATE
Так что теперь у меня есть это
#define MAX 128
typedef struct this_struct {
Type *items;
int top
} *SVar;
Теперь, чтобы создать первое распределение:
SVar s = malloc(sizeof(struct this_struct));
s->items = malloc(sizeof(Type)*MAX);
Теперь в другой функции для динамического выделения нового у меня есть:
SVar second;
if(s->top == MAX- 1) {
second = malloc(sizeof(*second));
second->items = malloc(sizeof(Type)*MAX*2);
}
free(s);
s = &second;
Это сбой моей программы. Я не знаю почему.
используйте указатель, а не массив. Например: 'Type items [MAX];' chage to 'Type * items;' – BLUEPIXY
@BLUEPIXY, допустим, я использую указатель. Как это изменится, как я могу манипулировать его размером? – code
'SVar second = malloc (sizeof (* second)); second-> items = malloc (sizeof (Type) * MAX * 2);' – BLUEPIXY