考虑这个无意义的程序:
不释放
/* main.c */
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char **argv) {
int i;
for (i = 0; i < 1024; i++) {
int pid = fork();
int status;
if (pid) {
wait(&status);
}
else {
char *ptr = (char *)malloc(1024*sizeof(char));
char *args[2] = {"Hello, world!", NULL};
execve("/bin/echo", args, NULL);
}
}
}
不释放
ptr
会对main.c或其他程序造成内存泄漏吗?还是在调用execve时会被自动释放?
free(ptr);
,我会感觉更安心。 - pmg