2016-11-21 4 views
0

У меня есть очень простая программа, в которой некоторые данные malloc() инициализируют ее, а затем освобождают ее, и я продолжаю получать эту ошибку. Я понятия не имею, почему это происходит, какие-то идеи?Ошибка free(): Недопустимый следующий размер (быстрый)

#include <stdlib.h> 
#include <stdio.h> 

int main(){ 
    int * big_mem; 
    int row_size = 4096; //not sure about this.... 
    int num_rows = 5; 
    int const_val = 0xFFFFFFFF; 

    big_mem = (int *) malloc(row_size * num_rows); 
    if(!big_mem){ 
     printf("Failed to malloc, exiting..."); 
     return 0; 
    } 

    i = 0; 
    for(; i < row_size * num_rows; ++i){ 
     big_mem[i] = const_val; 
    } 
    printf("Initialized mem, "); 

    free(big_mem); 
    big_mem = NULL; 

    return 0; 
} 

Выход:

*** Error in `./test': free(): invalid next size (fast): 0x0000000000819010 *** 

ответ

2

Использование malloc(row_size * num_rows * sizeof(int)).

У вас недостаточно памяти, поэтому ваша петля написана через вашу память malloc(). Я удивлен, что вы не просто получили ошибку сегментации.

0

Вы должны написать:

big_mem = (int *) malloc(row_size * num_rows * sizeof(int)); 
Смежные вопросы