使用valgrind--leake-check=yes运行以下C程序会导致valgrind给出一条输出,指示"syscall param execve(Argv)指向未初始化的字节(S)"
以下代码为:
execv(commandCopy, cmd->argv);
fprintf(stderr, "%s: Command not found.\n", commandCopy);
free(cmd->argv);
free_cmd(cmd);
_exit(0);
根据valgrind的说法,问题发生在线路上:
==582489== Syscall param execve(argv) points to uninitialised byte(s)
==582489== at 0x49630FB: execve (syscall-template.S:120)
==582489== by 0x109FE5: parse_cmd (mysh.c:318)
==582489== by 0x109C53: parse_cmd (mysh.c:228)
==582489== by 0x10A25E: main (mysh.c:388)
我犯了什么错误,导致valgrind给出这样的输出?