Функция уничтожения без утечки памятиC++

Программы на C++. Форум разработчиков
Anonymous
Функция уничтожения без утечки памяти

Сообщение Anonymous »

Предположим, я хочу запустить функцию и избежать утечки памяти, что может произойти потому, что функция на самом деле приводит к утечке памяти, или потому что мне нужно ее уничтожить.
В настоящее время я используйте новый процесс в 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]

Вернуться в «C++»