Я изучаю C и пытаюсь построить динамический массив. Я нашел отличный учебник по этому вопросу, но я не понимаю его полностью. Код у меня сейчасДоступ к элементу динамического массива C
typedef struct{
int size;
int capacity;
char *data;
}Brry;
void brry_init(Brry *brry){
brry->size = 0;
brry->capacity = 2;
brry->data = (char *)calloc(brry->capacity, sizeof(char));
}
void brry_insert(Brry *brry, char value){
brry->data[brry->size++] = value; //so do check here if I have enough memory, but checking something out
}
int main(void){
Brry brry;
brry_init(&brry);
for (int i = 0; i < 3; i++) {
brry_insert(&brry, 'a');
}
printf("%c\n", brry.data[2]);
return 0;
}
В моей основной функции добавить 3 элемента в массиве, но он выделяется только 2. Но когда я печатаю это работает нормально? Я ожидал, что какая-то странная ценность будет напечатана. Почему это или я делаю что-то неправильно?
Обратите внимание, что 'brry.data [3]' - это 4-й элемент. – Novak
Извините, скопируйте полученную ошибку – Haagenti
Это [неопределенное поведение] (http://stackoverflow.com/a/367662/1113392) – A4L