记录:invalid next size (normal)问题的解决

最后调试程序的时候,已经能跑出正确结果,但是还是报这个错在这里插入图片描述后来参考了这个网站:https://blog.csdn.net/mociml/article/details/6286311
得知是内存泄露的问题。
情况有这三种:
(1)free了没有分配的内存

(2)还有就是分配了内存忘记释放也有可能会出现这样的问题。

(3)最后查出来是数组循环的时候越界了 , 写到了其他的内存里面, 然后一free那个区域就出现了这样的问题。

由于1.2都没问题,所以猜测是(3)中,循环使用小数组的时候它将数据写到了别的内存中。

0 100
1
40W

由于并不像开辟40W×100这么大空间的数组,我原本是开辟了1个长度为100的数组作为临时变量,就出现了这个问题。
后面直接改为开辟这么大空间,然后每次读取并计算一些数据就解决了这个问题。

inp_data->query=malloc(Data_line_num*150*sizeof(uint8_t));
for(int i=0;i<40W;i++)
{
fread(&inp_data->query[i*150],sizeof(uint8_t),inp_data->qlen[i],query_data_fp);
&inp_data->query[i*150];
fuc(&inp_data->query[i*150]);
}

猜你喜欢

转载自blog.csdn.net/qq_39499621/article/details/85231617