私は自分のソフトで 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;