Funkcje zarządzania pamięcią

abort<STDLIB.H>
Awaryjne zakończenie programu i zwrócenie do systemu operacyjnego kodu powrotu 3. Program nie zapisuje buforów dyskowe, nie zamykane otwartych plików i nie wykonuje żadnej z funkcje zarejestrowane przez atexit. Przed zakończeniem programu wyświetlany jest komunikat: Abnormal program termination.
Składnia:void abort(void);
Zwracana wartość:brak
Przykład:
#include <stdlib.h>
#include <stdio.h>

void main(void)
{ printf("Wywołanie funkcji abort()\n");
  abort();
}
atexit<STDLIB.H>
Powoduje zarejestrowanie funkcji, która będzie wywołana przed wyjściem z programu po wywołaniu exit lub return w funkcji main. Można zarejestrować do 32 takich funkcji. Należy pamiętać, że funkcje te wykonywane są w kolejności odwrotnej do kolejności rejestrowania: pierwsza zarejestrowana funkcja będzie wykonana jako ostania, a ostatnia zarejestrowana - jako pierwsza..
Składnia:int atexit(atexit_t funkcja);
gdzie:funkcja - nazwa rejestrowanej funkcji
Zwracana wartość:zero w przypadku powodzenia, a w przeciwnym razie wartość niezerowa
Przykład:
#include <stdlib.h>
#include <stdio.h>

void exit_fun1(void)
{ printf("Wywołanie funkcji nr #1\n");
}

void exit_fun2(void)
{ printf("Wywołanie funkcji nr #2\n");
}

int main(void)
{ atexit(exit_fun1);	// zarejestrowanie 1-szej funkcji
  atexit(exit_fun2);	// zarejestrowanie 2-giej funkcji
  exit (0);
}
exit<STDLIB.H>
Normalne zakończenie programu i zwrócenie do systemu operacyjnego wartość status. Przed zakończeniem programu zapisywane są wszystkie bufory dyskowe, zamykane wszystkie otwarte pliki i wykonywane wszystkie funkcje zarejestrowane przez atexit.
Składnia:void exit(int status);
gdzie:status - kod powrotu programu (wartość ustawiana w systemie operacyjnym): wartość z zakresu 0 - 255.
Zwracana wartość:brak
Przykład:
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>

void main(void)
{ int status;

  printf("\nPodaj liczbę od 0 do 255: ");
  status = getch();

  exit(status - '0');     // ustawia ERRORLEVEL na podaną wartość
}
getenv<STDLIB.H>
Zwraca wartość podanej zmiennej środowiskowej systemu operacyjnego. Można również odwołać się predefiniowanej zmiennej environ: tablicy zawierającej wszystkie zmienne środowiskowe.
Składnia:char *getenv(const char *nazwa);
gdzie:nazwa - nazwa zmiennej środowiskowej systemu operacyjnego, której wartość chcemy odczytać.
Zwracana wartość:jeżeli zmienna istnieje, to zwracana jest jej wartość, w przeciwnym razie NULL.
Przykład:
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <dos.h>

void main(void)
{ char *path;
  int i = 0;

  path = getenv("PATH");     // pobranie wartości zmiennej PATH
  printf("Zmienna środowiskowa PATH:\n   %s", path);
  
  // wyświetlenie wszystkich zmiennych środowiskowych
  while (environ[i])
        printf("%s\n",environ[i++]);

  return;
}
putenv<STDLIB.H>
Tworzy nową zmienną środowiskową i przypisuje jej określona wartość. Jeżeli podana zmienna już istnieje, to jej dotychczasowa wartość zostanie zastąpiona przez podana w funkcji. Funkcja może być użyta również do likwidowania zmiennych: podanie jako parametru NazwaZmiennej= spowoduje przypisanie do podanej zmiennej pustego łańcucha, czyli zlikwidowanie zmiennej.
Składnia:int putenv(const char *zmienna);
gdzie:nazwa - zmienna środowiskowa systemu operacyjnego, którą ustawiamy. Musi mieć postać: NezwaZmiennej=WartośćZmiennej podobnie jak w poleceniu systemowym SET
Zwracana wartość:zero w przypadku powodzenia, w przeciwnym razie wartość -1.
Przykład:
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <dos.h>
#include <string.h>

void main(void)
{ char *oldpath, *newpath;

  oldpath = getenv("PATH");  // pobranie zmiennej PATH

  newpath = (char *) malloc(strlen(oldpath) + 15);
  strcpy(newpath, "PATH=");
  strcat(newpath, oldpath);
  strcat(newpath, ";C:\\DODANY");

  // ustawienie zmodyfikowanej zmiennej PATH
  putenv(newpath);

  return;
}
system<STDLIB.H>
Przekazuje systemowi operacyjnemu polecenie do wykonania i oczekuje na jego zakończenie.
Składnia:int system(const char *polecenie);
gdzie:polecenie - polecenie systemu operacyjnego lub nazwa uruchamianego programu.
Zwracana wartość:zero w przypadku powodzenia, w przeciwnym razie wartość -1.
Przykład:
#include <stdlib.h>
#include <stdio.h>

void main(void)
{ printf("Wykonanie polecenia DIR\n");
  system("dir");

  printf("Uruchomienie programu Norton Commander\n");
  system("C:\\NC\\NC.EXE");

  return;
}