Funkcja na krytyczne błędy w praktyce

0

hej. mam taką funkcję na powiadamianie o jakiś błędach od razu z wyjściem. tylko tak się zastanawiam, że jeżeli w systemie dochodzi już do tak kuriozalnych sytuacji jak brak pamięci czy taka funkcja wgl zadziała i będzie wstanie wypisać na stderr? czy może lepiej użyć coś prostszego? znajdę gdzieś kod tych funkcji va_* ??

static void fatal_err(const char* format, ... ) {
	va_list arglist;
	fprintf(stderr,"MOJPROGRAMIK: ");
	va_start(arglist, format);
	vfprintf(stderr,format,arglist);
	va_end(arglist);
	fprintf("\n");
	exit(EXIT_FAILURE);
}

        /* a tak wywoluje np. */
	if(allocptrnull)
		errmsg_ex("malloc %s\n",strerror(errno));

Pozdrawiam

1

Pamięć na stos i stałe jest przydzielana w momencie uruchomienia programu także jeśli nie przydzielasz nic poza tym a Twój program już jest uruchomiony to powinno być ok.

0

va_* są zależne od implementacji.

0

a jak to wygląda w systemach Linux? klikam sobie na va_list w Eclipse to mnie przenosi do stdio.h i

typedef _G_va_list va_list;

, gdzie nie ma kodu źródłowego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1