C-免费错误():下一个尺寸无效(快速)



我有一个非常简单的程序,该程序是malloc()的一些数据,对其进行初始化,然后释放它,然后我会遇到此错误。我不知道为什么会发生这种情况?

   #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 ***

使用malloc(row_size * num_rows * sizeof(int))

您没有足够的内存,因此您的循环在Malloc()ED内存中都写了。我很惊讶您不仅会出现细分错误。

您应该写:

big_mem = (int *) malloc(row_size * num_rows * sizeof(int));

相关内容

  • 没有找到相关文章