キューを実装するために C で動的配列を作成しようとしていますが、コンパイルすると次のエラーが発生します: * glibc が検出されました. / Ex: realloc (): 無効な次のサイズ: 0x0000000001fbe030 * *
私のコードは次のとおりです。
typedef uint32_t u32;
typedef uint64_t u64;
typedef struct _queue_t *queue_t;
struct _queue_t {
u32 *array; // Arreglo para guardar elementos de la cola
u32 FirstElem; // Primer elemento de la cola
u32 LastElem; // Ultimo elemento de la cola
u32 memory_allocated; // Para saber si tengo que pedir mas memoria
u32 Size; // Devuelve la cantidad actual de elementos que tiene la cola
};
queue_t queue_empty() {
queue_t queue = NULL;
queue = calloc (1, sizeof (struct _queue_t));
assert(queue != NULL);
queue->array = (u32 *) calloc(100, sizeof(u32));
queue->FirstElem = 0;
queue->LastElem = 0;
queue->memory_allocated = 100;
queue->Size = 0;
return queue;
}
int main() {
queue_t queue = NULL;
queue = queue_empty();
for (u32 i = 0; i < 1000; i++) {
if (queue->memory_allocated == queue->Size) {
queue->array = (u32 *) realloc (queue->array, 100*sizeof(u32));
queue->memory_allocated += 100;
}
queue->LastElem += 1;
queue->array[queue->LastElem] = i;
queue->Size += 1;
}
return(0);
}
なぜこのエラーが発生するのですか?