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輸出這個輸出?