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
我正在尝试释放这些结构,我正在接受以下错误。
答案 0 :(得分:1)
你写过数组的末尾。最后一个元素是block[999]
,但您的代码也会写入block[1000]
。
答案 1 :(得分:1)
C中的数组始终以索引0
开头,以size-1
结尾。在循环中,您可以访问数组后面。它应该是:
for (i=0;i < size;i=i+1){
对于k
可能相同,但我无法找到它是如何使用的。