- PR -

スタックオーバーフローを防ぐ方法について

投稿者投稿内容
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2008-03-11 16:11
スタックオーバーフローというエラーの出方は、たとえば意図的にメソッドを再帰的に無限に呼ぶようなことを試しにやってみた場合と同じ出方なのでしょうか?
それとも、低レベルなところで落ちていて、なんらかのランタイムライブラリーが「スタックオーバーフロー」と言ってくるのでしょうか?
後者ならば、API を呼ぶようなところでメモリーを壊していて、それが後になってエラーとして現れているのかもしれません。
セラフ
ベテラン
会議室デビュー日: 2005/12/01
投稿数: 95
お住まい・勤務地: 東北の顔の形といえば
投稿日時: 2008-03-11 16:17
>>Yamさん
お返事ありがとうございます。

残念ながらその部分は代入のみで、Stringへの変更等は行っておりませんので関係ないと思われます。ためしにConstで固定してみても状況は変わりませんでした。
セラフ
ベテラン
会議室デビュー日: 2005/12/01
投稿数: 95
お住まい・勤務地: 東北の顔の形といえば
投稿日時: 2008-03-11 16:24
>>unibonさん
返信ありがとうございます。

コールスタックのオーバーフローだと思い込んでいます。
20時間に1度しか発生しない上に、Catchできないので・・・

VB2005のスタックオーバーフローの発生はデバッグでしか拾えません。
そのときの発生場所がバラバラですので、コールスタックかな?程度の判断です。

よく調べずに思い込んでいましたが、VBのLOOP文ってもしかして末尾再帰ですかね?
GOTO文に置き換えてみようかな・・・
セラフ
ベテラン
会議室デビュー日: 2005/12/01
投稿数: 95
お住まい・勤務地: 東北の顔の形といえば
投稿日時: 2008-03-11 16:31
>>indigo-xさん
ありがとうございます

DLLImportは使用してないです。
再帰も無い「ハズ」です。
第三者にも再帰探してもらいましたが、見つかりませんでした。

まずは、コメントアウトを増やして試してみます。

C#に置き換えるのは簡単そうですね。時間があれば試して見ます。

スキルアップ/キャリアアップ(JOB@IT)