HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0812
文字列変数とexeにしたときの容量4未解決


リンク

2006/8/12(Sat) 14:05:41|NO.1978

たとえば
moji="asdfgh・・・・" 1MBぐらい続く
と変数で定義した場合と
HSPのスクリプトで
#define moji 上のと同じ
とマクロで定義してexeに埋め込んだ場合、
使用するメモリは同じですか?
どっちの場合も使用するのは一回です



この記事に返信する


SHI

リンク

2006/8/12(Sat) 18:10:51|NO.1980

自分でそれぞれのEXEファイルを作成してみてはどうでしょう。

回答を待ってるよりよほど早く結果がわかりますよ。



hiro

リンク

2006/8/13(Sun) 01:20:06|NO.1986

環境 OS:WindowsXP HSP:3.0Aです。

質問の内容と違っていたらすいませんが、
「#define」はただ置き換えてるだけです。ですから、

#define moji "asdfgh"

moji="asdfgh"

は同じ意味です。このあたりはヘルプ参照して下さい。
ただ、上の場合は6バイトの文字列ですが、
下の場合、事前に「sdim moji,1024」とした場合
1024バイトのメモリで6バイトの文字列を格納しています。
このあたりはプログラマーの仕様の範疇かと思います。

次に、実際に実行ファイルにしたときのサイズの例として
以下、151,714byte

#define moji "asdfgh"

以下、151,733byte

moji="asdfgh"
でした。

# また、上記環境で「#define」のマクロ定義できるのは255バイトまででした。
# (※文字列を定義するなら、「""」をはさむので253バイト)
# ちなみにマクロ名は変数の仕様と同じく59バイトまでかと思います。
# (※60バイトでもエラー出ませんでしたが、仕様に従う判断です)

駄文失礼しました。



kz3

リンク

2006/8/13(Sun) 10:48:35|NO.1988

>#define moji "asdfgh"
>と
>moji="asdfgh"
>は同じ意味です。

違います。

前者は文字列"asdfgh"を表す『moji』というテキストを定義しているだけです。
後者は変数『moji』がメモリ上に確保され、その変数が保持する文字列"asdfgh"がメモリ(変数の値を保持する領域)に展開されます。

違いは実行時に『moji』という実体があるかないかです。

前者は実行時はmojiが"asdfgh"に展開されているのでmojiという実体はありません。
後者は実行時にmojiという変数が存在するのでmojiという実体があります。



hiro

リンク

2006/8/13(Sun) 17:45:39|NO.1989

>kz3さん
>違います。

ご指摘ありがとうございます。
確かに同じ意味ではありません。

間違ったレスすいませんでした。



ONION software Copyright 1997-2021(c) All rights reserved.