
No.2ベストアンサー
- 回答日時:
出来ないと思ってください(厳密に言えば出来るが、非常に高度なテクニックが必要)
以下、分かり易く説明すると・・・
ご質問は”プログラムを途中から(しかも不定な場所から)走らせることが出来ますか?”と聞かれているのと同じです。
と考えれば、出来ないことが何となくわかると思います。
仮に中断したPC(プログラムカウンタ)を保存し、そこから再開させるという手段を講じてもスタックの問題があります。
関数の戻り先や関数内で使用する自動変数は、スタック領域に置かれプログラム終了と同時に他に開放されます。
よって、再開した時は元の領域の値は不定です。
再帰関数で言えば、実行中の関数がどの関数のどこに戻れば良いのか等の情報が消滅してしまうのです。
中断時点で静的なメモリ領域に情報全てを確保する手もありますが、これをやると他のアプリが迷惑を被る可能性もあります。
この回答へのお礼
お礼日時:2006/06/23 15:23
やはり無理ですか...
>厳密に言えば出来るが、非常に高度なテクニックが必要
そこまで自分の実力をつけたいですね。
でもすっきりしました!
ありがとうございました。
No.1
- 回答日時:
一般的にはできないと思います。
再帰処理の状態はスタック上にあるからです。
末尾再帰のようなループを再帰で表現したような場合は、
現在の状態を保存することで再開することができるかもしれません。
また、かなり大掛かりになってしまいますが、
例えば、ヴァーチャルマシンのような仮想CPU(あるいはシミュレータとかインタプリタ)上でのプログラムの実行を行うようなプログラム(あるいは類似のシステム)を作れば、実行状態のスナップショットを保存すれば、継続できると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel(VBA)でSetTimer関数を使...
-
win10で、正確な待ち時間の作り方
-
VBA:CSVファイルの読出し手法...
-
C言語 再帰処理のメリットとデ...
-
Excel VBA での処理時間計測結...
-
.netからexcel操作の処理速度が...
-
wavelet変換のソフト
-
ノットイコールを教えて下さい
-
テキストファイルの空行をスキ...
-
Macターミナルで実行中のプログ...
-
powershell を使いカレントディ...
-
TCP/IP通信時のサーバーからの受信
-
Windows上で、シグナル(SIGTERM...
-
プロセスIDの取得方法について
-
C# シリアル通信でデータ受信...
-
VBSの処理中一旦処理を止めて再...
-
VBA、UserFormを前面に出力して...
-
アプリケーションが終了するま...
-
構文エラーについて教えてください
-
vb.netでEXCEL起動がうまくでき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
win10で、正確な待ち時間の作り方
-
小数点を含む数値かどうか判断...
-
Excelでのセル内容の高速消去方法
-
If Not c Is Nothing Then ~延...
-
for文の処理に時間がかかってい...
-
Excel VBAにて、2GB超の点群デ...
-
VB 電卓 メモリー機能
-
絶対パスの取得について
-
DirectShowでのfilterの作り方
-
wavelet変換のソフト
-
エクセルVBA 時間抜けの取得
-
Excel(VBA)でSetTimer関数を使...
-
プログラム上のCPU稼働率低減に...
-
ノットイコールを教えて下さい
-
テキストファイルの空行をスキ...
-
.netからexcel操作の処理速度が...
-
SQLの速度をあげるには・・・
-
基本情報技術者試験詳しい方へ...
-
Excel VBA データ削除の高速化
-
VBA言語プログラミング
おすすめ情報