Альтернатива просмотру вывода Valgrind: измените ваш компилятор так, чтобы он генерировал:
int main() { return foo_main(); }
int foo_main() { /* whatever you've emitted before */ }
Предполагая, что вы не назначаете выделенные блоки глобальным переменным (что не имеет смысла, поскольку у вас есть только одна функция), вы только что превратили «все еще достижимый» в «определенно просочившийся».
Возможно, даже лучшее преобразование: не вызывайте exit(0)
в вашем main;замените его на return 0;
.Чистый эффект должен быть таким же, как указано выше - __libc_main
теперь будет вызывать exit
для вас, и все локальные переменные в main
к этому времени будут вне области действия.