Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pointers Valgrind错误:大小为1的读取无效_Pointers_Valgrind - Fatal编程技术网

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 ==23114==大小为1的读取无效 ==23114==大小为1的写入无效

我很确定这不是瓦尔格兰德说的全部

你应该

使用调试信息(最有可能是-g标志)构建程序。这将让valgrind准确地告诉您哪一行触发无效读写 如果问题没有变得明显,请编辑您的问题并包含整个valgrind输出。 Re running valgrind-track origins=是您的exe可能会提供其他有用信息。
最后,你的算法看起来完全是假的。就我所知,在第一个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来确定这发生在哪一行。