В настоящее время у меня есть программа, где мне нужно проверить, не переименована ли переменная в качестве параметра. Пока кажется, что это довольно сложно сделать в C, поэтому моя следующая идея заключалась в том, чтобы вызвать обработчик сигнала, чтобы поймать segfault. Однако мой код не вызывает обработчик сигнала, когда он пытается получить доступ к неинициализированной переменной, например:
void segfault_sigaction(int signal, siginfo_t *si, void *arg)
{
printf("Caught segfault at address %p\n", si->si_addr);
exit(0);
}
void myfree(void*p, char * file, int line){
struct sigaction sa;
memset(&sa, 0, sizeof(sigaction));
sigemptyset(&sa.sa_mask);
sa.sa_sigaction = segfault_sigaction;
sa.sa_flags = SA_SIGINFO;
sigaction(SIGSEGV, &sa, NULL);
char up = *((char*)p); //Segfault
EDIT: в системе Linux