ページ 11

_System_EndProgram

Posted: 2006年3月24日(金) 17:24
by Toshi
インクルードの中の basic.sbp に記述されている _System_EndProgram は
クリティカル セクションとヒープの解放を行うものですが、
_System_StartupProgram のように自動では呼ばれないみたいなので
どこかのタイミングで呼ぶものなのでしょうか。

Re: _System_EndProgram

Posted: 2006年3月24日(金) 19:44
by ノッチ
> インクルードの中の basic.sbp に既述されている _System_EndProgram は
> クリティカル セクションとヒープの解放を行うものですが、
> _System_StartupProgram のように自動では呼ばれないみたいなので
> どこかのタイミングで呼ぶものなのでしょうか。

たしかに_System_StartupProgram自体を削除しても正常動作しますね。

呼ばれるはずのものが呼ばれてないのか、
なにかの名残で残ってるだけなのか、
ダミーで入ってるだけなのか、
ユーザに"呼んでね" と呼びかけているのか、

つまりよくわかりません。

Posted: 2006年3月24日(金) 20:02
by Toshi
これらのプロシージャで使われている変数名をインクルードのファイルから検索したところ
string(64).sbp, function.sbp(malloc 関係), prompt.sbp にあったので、
String 型の変数や malloc 関係の関数を扱ったり、N88BASIC モードのときに必要になるみたいです。。。

Posted: 2006年3月24日(金) 20:09
by ノッチ
> これらのプロシージャで使われている変数名をインクルードのファイルから検索したところ
> string(64).sbp, function.sbp(malloc 関係), prompt.sbp にあったので、
> String 型の変数や malloc 関係の関数を扱ったり、N88BASIC モードのときに必要になるみたいです。。。

そう思って_System_EndProgramを削除した状態でN88BASICモードで文字列を
使ってみたのですが何も起こらず終了しました。

コード: 全て選択

#N88BASIC

Dim a As String
a="1234567890"

End
こんなコードで試したのでもっと特殊なことをしないと反応しないのかも
しれませんが。

Posted: 2006年3月24日(金) 20:47
by Toshi
_System_StartupProgram は、呼ばないようにしただけでアクセス違反になりました。
_System_EndProgram は、呼ばなくても実行時にエラーにはなりませんが
メモリが完全には解放されなくなりますね。
なのでどこかで呼ぶものなのかと思い、質問した次第です。