初期化されていないスタックへのアクセス

提供: Appmethod Topics
移動先: 案内検索

アクセス エラー への移動


スタックのの未初期化領域にアクセスすると、このエラーが発生します。以下のサンプル コードでは、スタック上のローカル変数へのポインタが関数の内部で変更されています。関数から処理が戻ったとき、スタックのその(ポインタが指している)部分はもう有効ではなく、そこにアクセスするとエラーが発生します。

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