Я пытаюсь реализовать кольцевой буфер со следующей структурой
/*head, tail are indexes of the head and tail of ring buffer
*count is the number of elements; size is the max size of buffer
*rbArray is an array to pointer of char used to store strings
*/
struct rb{
int head;
int tail;
int count;
int size;
char *rbArray[];
};
Затем я использую следующую функцию для создания строкового буфера:
struct rb *create(int n){
/*allocate memory for struct*/
struct rb *newRb = (struct rb*)malloc(sizeof(struct rb)+ n*sizeof(char *));
assert(newRb);
int i;
for(i=0;i<n;i++)
newRb->rbArray[i] = NULL;
/*put head and tail at the beginning of array
initialize count, set max number of elements*/
newRb->head = 0;
newRb->tail = 0;
newRb->count = 0;
newRb->size = n;
return newRb;
}
Я вызываю эту функцию в основном:
struct rb *newRB = (struct rb*)create(100);
Тем не менее, у меня проблема прямо на этапе выделения памяти для структуры. В режиме отладки я вижу, что значению head, tail, count были назначены очень странные большие числа, но не 0. И программа зависает после этого самого первого шага, не выдавая мне никаких исключений.
Может кто-нибудь помочь мне объяснить эту проблему, пожалуйста? Как я могу это исправить?