2

大規模で複雑な C プログラムで、静的変数、グローバル構造体、および動的に割り当てられた変数によって使用されるすべてのメモリの内容をファイルに保存したいと考えています。これらのメモリ変数は 10,000 を超えています。

Cプログラムはシングルスレッドのみで、ファイル操作はなく、プログラム自体はそれほど複雑ではありません(計算が複雑です)。

次に、プログラムの同じ実行で、この保存された状態からメモリを初期化します。

これが可能であれば、誰かがこれを達成するためのアプローチを提供できますか?

4

1 に答える 1

2

すべてのデータを保持する構造体を定義する必要があり、それをファイルに保存する関数を実装する必要があります。

このようなもの:構造体をファイルに保存する

ただし、この方法は最も単純ですが、移植性がまったくないことに注意してください。

コメント後に編集: 基本的に、実行したいことは、プログラムで起こっていることをすべて保存し、ロード後に再起動することです。これは簡単な方法では不可能だと思います。「アプリケーションのステータス」が何を意味するかを理解する必要があります。考えてみてください。メモリのダンプを実行すると、データだけでなく、現在の命令ポインターも保存されます。したがって、その「ダム」ダンプを使用すると、現在実行中の実際の命令も保存されます。そして、あなたが本当に気にしたくない多くの合併症。

あなたが考えている最も近いことは、仮想マシンでプログラムを実行することです。VM を一時停止すると、実行ステータスは「保存済み」になりますが、VM を再起動するたびに、プログラムは一時停止したのとまったく同じ実行ポイントから再起動します。

構成がアプリケーション全体に分散している場合でも、すべてを保存するために使用されるグローバル構造体にアクセスできます。それでも、プログラムを理解し、何を保存する必要があるかを特定する必要があります。その上に近道はありません。

于 2013-09-30T06:08:04.363 に答える