C 在进行内存指针算法时,如何避免valgrind report mem丢失?;

C 在进行内存指针算法时,如何避免valgrind report mem丢失?;,c,valgrind,memcheck,C,Valgrind,Memcheck,我在我的软件上使用valgrind的memcheck;但我在这方面有问题:出于某种原因,我们将在存储之前转换malloced指针,并在使用时转换回。就像这样: char* ptr = (char*)malloc(1); ptr = ptr + 1; ...... origin_ptr = ptr -1; free(origin_ptr); ptr = ptr + 1; <------ this will make valgrind to report memory lost; char

我在我的软件上使用valgrind的memcheck;但我在这方面有问题:出于某种原因,我们将在存储之前转换malloced指针,并在使用时转换回。就像这样:

char* ptr = (char*)malloc(1);
ptr = ptr + 1;
......
origin_ptr = ptr -1;
free(origin_ptr);

ptr = ptr + 1; <------ this will make valgrind to report memory lost;
char*ptr=(char*)malloc(1);
ptr=ptr+1;
......
原点_ptr=ptr-1;
免费(原产地检查);

ptr=ptr+1 这是valgrind无法正确检测到的。因此,您必须编写一个忽略相应函数的抑制文件

而且,通常不鼓励做你正在做的事情,因为
免费
特别要求你免费的东西是你根据
malloc
得到的东西;现在,
+1-1
对我来说似乎也是一个否定,但我怀疑你在背后做了更复杂的事情