Pointers Valgrind错误:大小为1的读取无效
我找不到这个代码中的错误,我看了几个小时。。。瓦尔格林说:Pointers Valgrind错误:大小为1的读取无效,pointers,valgrind,Pointers,Valgrind,我找不到这个代码中的错误,我看了几个小时。。。瓦尔格林说: ==23114== Invalid read of size 1 ==23114== Invalid write of size 1 我试着用一些printfs进行调试,我认为错误在这个函数中 void rdm_hidechar*名称,字节*img,字节*位,int msg,int n,int size { 文件*fp; INTR/ 字节*已使用; int i=0,j=0; INTP; fp=fopenname,wb; 使用=mall
==23114== Invalid read of size 1
==23114== Invalid write of size 1
我试着用一些printfs进行调试,我认为错误在这个函数中
void rdm_hidechar*名称,字节*img,字节*位,int msg,int n,int size
{
文件*fp;
INTR/
字节*已使用;
int i=0,j=0;
INTP;
fp=fopenname,wb;
使用=mallocsizeofByte*msg;
fori=0;i最后,你的算法看起来完全是假的。就我所知,在第一个while循环之后,j变为3,在这种情况下,应该使用const int j=3;并废除j++。另外,您引用img[j+p],其中p在0和n之间。如果n确实是img的大小,那么j+p索引超出img限制并触发这两个错误就不足为奇了。您可以使用option-read var info=yes运行valgrind并共享输出吗?这可能发生在您写入和读取img指向的数组时。使用gdb来确定这发生在哪一行。