我试图释放stuct数组但获得free():无效的下一个大小(快):0x0000000000afa010

时间:2017-02-08 03:37:02

标签: c malloc free

struct cacheline
{
    int x[16];
};
struct cacheline *block = malloc(sizeof(struct cacheline) *size); //malloc for array of stucts
    write_start = clock();
    for (k=0;k<=1000;k=k+1){
        for (i=1;i<=size;i=i+1){
            for(j=0;j<16;j=j+1){
                    block[i].x[j] = j+1; ///some operation
            }
        }
    }
write_stop = clock();
Elapsed_write_time = (double)(write_stop - write_start)/1000 * 16;
printf("Elapsed time: %f\n",Elapsed_write_time);
free(block); //free the araray of structs

我正在尝试释放这些结构,我正在接受以下错误。

2 个答案:

答案 0 :(得分:1)

你写过数组的末尾。最后一个元素是block[999],但您的代码也会写入block[1000]

答案 1 :(得分:1)

C中的数组始终以索引0开头,以size-1结尾。在循环中,您可以访问数组后面。它应该是:

    for (i=0;i < size;i=i+1){

对于k可能相同,但我无法找到它是如何使用的。