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