|
回答ありがとうございます。
> 文字列の長さや個数などから、概算で計算するしかないと思います。
> 最大値がありますが、代入時や関数の返り値など変数相当の一時的なものもあった
>り、1つの変数あたりの
> 管理用の情報もあって、実際は3倍くらい確保されています。
ここで少し分からないがいくつかございます。
1. 数値式の値の消費量。実行処理上は32bit整数版で 32bit ( 4Byte ) 、それ以
外は 64bit ( 8Byte ) で
扱われているが、実際の消費量もこれと同じかどうか。
2. 文字列式の値の消費量。実際にメモリ上で扱われる 1 文字当たりの Byte 数が
・秀丸単位。すなわち ASCII 範囲は 1Byte 、Shift-JIS 範囲は 2Byte 、U
nicode 範囲は 4Byte 。
・UCS-2 単位。通常は 1 文字 2Byte 、サロゲートペアは 4Byte。
・UCS-4 単位。1 文字 4Byte 。
・上記 3 つ以上に消費している。1 文字 8Byte とか。
のどれに該当しているのか。
3. 変数の名前の部分の消費量。現状では変数名には [A-Za-z0-9_\$#] しか使え
ないため、理論上は
ASCII 文字列として 1 文字 1Byte になるが、果たして実際はこの通りなのか
どうか。
4. サブルーチンなどの行ラベル名の消費量。現状ではラベル名には [A-Za-z0-9
_] しか使えないため、
理論上はASCII 文字列として 1 文字 1Byte になるが、果たして実際はこの通
りなのかどうか。
5. 「代入時や関数の返り値など変数相当の一時的なものもあったり」とあるが、
この一時的な値の
メモリ領域は使用後に直ちに解放されるかどうか。
6. サブルーチンのローカル変数や実引数のメモリ領域は、サブルーチン終了と同
時に直ちに解放されるか
どうか。
7. まだ値を代入していない変数や配列要素は、参照されても勝手にメモリ領域を
確保することはないのか
どうか。
8. 変数を宣言したときに消費される、変数の名前や値の部分を除いた「管理用の
情報」は変数 1 個当たり
おおよそ何 Byte になるのか。
これらのことが分かればメモリ使用量の合計の概算を立てることができます。
|
|