我继承了C代码..其中一行是在下面。这里的icd是什么意思。它是关键字还是名称。我无法在谷歌的任何地方找到它。
icd **d1cols = (icd**)malloc(measquant*sizeof(icd *));
我有:
for(i=0; i<measquant; i++){
*(d1cols + i) = getwtOnAFileColReturnDouble1(fp1, fp2, xx, yy);
}
如果我打印以下行
printf("Test 0,0 weight=%.3le\n",*((*(d1cols + 0 ))->wt+0));
我在valgrind中遇到的错误包括其他错误:
读取大小为8
== 45918 ==在0x401945:main(getwtmeasAll_1_main.c:143)
== 45918 ==地址0x7e83850是一个大小为896的块内的0字节免费== 45918 ==在0x4C27430:免费(vg_replace_malloc.c:446)
这里有什么问题。
答案 0 :(得分:2)
看起来代码正在尝试读取已经解除分配的部分内存( free'd )。
icd
是由您的代码使用的库定义的数据结构。没有额外的细节,没有更多的话要说。