何故ローカル変数へのポインターは機能しないか?
日付 | 2002/07/26 |
---|---|
ID | 02-957 |
バージョン | 6.5.x , 6.7.x, and 6.8.x |
プラットフォーム | Windows and Mac OS |
ローカル変数はメモリー上に固定的なロケーションに存続するものではありません。
実際、ローカル変数は'スタック'と呼ばれる種類のメモリエリアに配置されます。'スタック'は一時的な値の保管場所として利用されるメモリエリアです。'スタック'に保管されたものは、都合によりスタック内の様々な場所に移動されることがあります。4Dは頻繁にスタックの更新を行いますので、原則的に、'スタック'に保管されたものがオリジナルの位置に存続し続けることは無いと考えるのが妥当です。このことは、結果的に、'スタック'に保管されたものを指すポインタはすでに参照すべきターゲットを見失っていると見るべきであることも示します。
正しいポインター利用方法:
vPointer:=->ProcessVariable
vPointer:=-><>InterProcessVariable
誤ったポインター利用方法
vPointer:=->$LocalVariable