Zugriff in nicht initialisiertem Stack

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Zugriffsfehler


Der Zugriff auf einen nicht initialisierten Bereich des Stack verursacht diesen Fehler. In dem folgenden Codebeispiel wird ein Zeiger auf eine lokale Variable auf dem Stack in einer Funktion geändert. Wenn die Funktion zurückkehrt, ist dieser Teil des Stack nicht mehr gültig, und beim Zugriff darauf tritt ein Fehler auf.

#include <tchar.h>
#pragma hdrstop
#include<stdio.h>
#include<dir.h>
class someclass{
	int fnumber;
  public:
	int getnumber(){return fnumber;}
	void setnumber(int nw){fnumber = nw;}
	int doublev(int val){return val*2;}
	int publicalval;

};


void locfunc(int **locp)
{
	int local_var;
	*locp = &local_var;
}

void myf()
	{
		int *locp;
		locfunc(&locp);
		*locp = 10; // error
	}

int _tmain(int argc, _TCHAR* argv[])
{
	myf();
	return 0;
}