Tôi nhận được một lỗi bí ẩn và tôi không biết tại sao. Mã này chạy nhiều lần trước khi không thành công, và nó luôn luôn thất bại tại cùng một điểm.Bí ẩn malloc: sysmalloc: Xác nhận lỗi không thành công
Đây là mã của tôi:
assert(size > 0);
int* sorted = malloc(size * sizeof(int));
Và đây là lỗi tôi nhận được khi tôi chạy nó:
malloc.c:2369: sysmalloc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
Tôi đã thử in ra kích thước và nó là 1 trong trường hợp này. Mã này chạy nhiều lần với các giá trị kích thước khác nhau, bao gồm 1, trước khi không thành công.
Có ai biết tôi đang làm gì sai không?
Cảm ơn.
Dòng 2369 là gì? ' – ouah
có thể trùng lặp của [Tại sao tôi nhận được xác nhận của lệnh malloc C?] (Http://stackoverflow.com/questions/2987207/why-do-i-get-ac-malloc- khẳng định-thất bại) –
@ouah Tôi nghĩ rằng dòng này là một phần của hàm malloc, chứ không phải là một phần của mã của poster; anh ta có lẽ không có nguồn cho thư viện đó. – mah