Variablen auf dem Heap: malloc und free
Completion requirements
Folgender Code greift das Problem auf, dass Funktionen keinen Pointer auf lokale Variablen zurückgeben können, ohne einen Zugriffsfehler zu provozieren. Das Beispiel zeigt, wie Heap-Speicher eingesetzt werden kann, um das Problem zu lösen.
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int *foo()
{
// http://en.cppreference.com/w/c/memory/malloc
int *p = (int *)malloc(sizeof(int));
memset(p, 0, sizeof(int));
printf("malloc: %d\n", *p);
*p = 5;
return p;
}
int main()
{
int *p = foo();
printf("%p\n", p);
printf("%d\n", *p);
free(p);
return 0;
}
Last modified: Friday, 18 May 2018, 4:35 PM