0
与valgrind --leak-check=yes
导致的valgrind给人一种输出指示获得“系统调用PARAM的execve(argv的)指向不可寻址字节(一个或多个)”在的valgrind
Syscall param execve(argv) points to unaddressable byte(s)
该方案是如下运行以下C程序:
int main() {
const int NUM_ARGS = 3;
char** run_arguments = malloc(sizeof(char*)*NUM_ARGS);
run_arguments[0] = "ls";
run_arguments[1] = "-l";
run_arguments[2] = "--color";
char* full_path = "/bin/ls";
int pid = fork();
if (pid == 0)
execv(full_path,run_arguments);
else {
int status;
waitpid(pid,&status,WUNTRACED);
free(run_arguments);
}
return 0;
}
根据Valgrind的,就行了execv(full_path,run_arguments);
出现的问题,这个问题从上线char** run_arguments = malloc(sizeof(char*)*NUM_ARGS);
完成malloc
起源。
我做了什么错误会导致valgrind输出这个输出?