Dieses Programm verdeutlicht meine Frage bestimmt besser als tausend Worte:
Hat dieses Programm nun zur Folge, den gesamten Speicher zu nutzen, wodurch das System auf keinen Speicher mehr zugreifen kann? Oder kann ich das Programm durchaus so benutzen, da das free() unwichtig ist?
An dieser Stelle denke ich, dass free() in der Tat unwichtig ist, da die Variable "var" nur zu der Funktion "allok()" gehört und somit nach beenden der Funktion doch sowieso gelöscht wird.
Oder täusche ich mich da?
Code:
#include <stdio.h>
#include <stdlib.h>
int
allokieren(void)
{
char *var;
var = NULL;
if ((var = malloc(50 * sizeof(char))) == NULL)
{
fprintf(stderr, "malloc() fehlgeschlagen!\n");
return 1;
}
/* free(var) */
return 0;
}
int
main(int argc, char *argv[])
{
while (!allokieren());
return 1;
}
Hat dieses Programm nun zur Folge, den gesamten Speicher zu nutzen, wodurch das System auf keinen Speicher mehr zugreifen kann? Oder kann ich das Programm durchaus so benutzen, da das free() unwichtig ist?
An dieser Stelle denke ich, dass free() in der Tat unwichtig ist, da die Variable "var" nur zu der Funktion "allok()" gehört und somit nach beenden der Funktion doch sowieso gelöscht wird.
Oder täusche ich mich da?