Accès dans une pile non initialisée

De RAD Studio
Aller à : navigation, rechercher

Remonter à Erreurs d'accès


L'accès à une zone non initialisée de la pile générera cette erreur. Dans l'exemple de code suivant, un pointeur vers une variable locale sur la pile est changé à l'intérieur d'une fonction. En sortie de la fonction, cette partie de la pile n'est plus valide, et une erreur se produit lors de son accès.

#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;
}