В настоящее время я используйте новый процесс в Linux для разделения двух адресных пространств, и он работает нормально:
Код: Выделить всё
#include
#include
#include
#include
#include
#include
template
int execute(F& f) {
int* shm = (int*)mmap(0, 64, PROT_READ | PROT_WRITE,
MAP_SHARED | MAP_ANONYMOUS, -1, 0);
pid_t pid = fork();
if (shm == 0 || pid < 0) {
munmap(shm, 64);
throw "Error executing";
}
if (pid == 0) {
*shm = f();
exit(0);
}
int status;
waitpid(pid, &status, 0);
int ret = *shm;
munmap(shm, 64);
return ret;
}
int testfunc() {
// Memory leak
for (int i=0; i
Подробнее здесь: [url]https://stackoverflow.com/questions/78670778/killing-function-without-memory-leak[/url]