在一個大型複雜的C程序中,我想將所有內存的內容保存到文件中,這些內存由靜態變量,全局結構和動態分配變量。這些內存變量超過10,000。 C程序只有單線程,沒有文件操作,程序本身也不那麼複雜(計算複雜)。如何保存C程序的內存狀態以便後來快速啓動
然後,在程序的一個相同的執行中,我想從這個保存的狀態初始化內存。
如果這甚至可能,有人可以提供一種方法來實現這一目標嗎?
在一個大型複雜的C程序中,我想將所有內存的內容保存到文件中,這些內存由靜態變量,全局結構和動態分配變量。這些內存變量超過10,000。 C程序只有單線程,沒有文件操作,程序本身也不那麼複雜(計算複雜)。如何保存C程序的內存狀態以便後來快速啓動
然後,在程序的一個相同的執行中,我想從這個保存的狀態初始化內存。
如果這甚至可能,有人可以提供一種方法來實現這一目標嗎?
你必須定義一個Struct來保存你的數據,然後你必須實現一個函數來將它保存到一個文件中。
事情是這樣的:但是Saving struct to file
,請注意,這種方法是最簡單的,但帶有不便攜的。
編輯之後評論:基本上,你想要做的是保存程序中發生的任何事情,然後在加載後重新啓動它。我不認爲這是可能的以任何簡單的方式。你必須明白「你的應用程序的狀態」是什麼意思。 想一想:做內存轉儲不僅可以保存數據,還可以保存當前的指令指針。所以,用這個「啞巴」轉儲,你也可以保存當前正在運行的實際指令。還有更多複雜的東西你真的不想關心。
您正在考慮的最接近的事情是在虛擬機中運行程序。如果您暫停虛擬機,則執行狀態將被「保存」,但是無論何時重新啓動虛擬機,程序都會在您暫停執行的同一執行點重新啓動。
如果通過應用程序分散配置,仍然可以訪問用於保存所有內容的全局結構。 但是,你仍然必須知道你的程序,並確定你必須保存。沒有捷徑。
感謝您的回答。但是我想知道的是如何定義一個Struct來保存我的所有數據。我想保存的變量分散在數百個函數中。所以我認爲如果我可以保存和加載堆棧區或堆區內存,它可以更容易,但我找不到解決方案如何。 – user2775054