2013-09-30 2 views
1

큰 복잡한 C 프로그램에서 정적 변수, 전역 구조 및 동적 할당에 사용되는 모든 메모리의 내용을 파일에 저장하고 싶습니다. 변수. 이러한 메모리 변수는 10,000 개가 넘습니다.C 프로그램의 메모리 상태를 나중에 뛰어 오려면

C 프로그램에는 단일 스레드 만 있고 파일 조작은 없으며 프로그램 자체는 복잡하지 않습니다 (계산은 복잡합니다).

그런 다음 동일한 프로그램 실행에서이 저장된 상태에서 메모리를 초기화하려고합니다.

이 경우조차도 가능합니까? 누군가이를 수행 할 수있는 방법을 제공 할 수 있습니까?

답변

1

구조체를 정의하여 데이터를 유지 한 다음 함수를 구현하여 파일에 저장해야합니다. 이 같은

뭔가 : Saving struct to file

이 방법은 간단하지만, 전혀 휴대되어 있다는 점 유의하시기 바랍니다.

댓글 후 편집 : 기본적으로, 프로그램에서 어떤 일이 일어나고 있는지 저장 한 다음로드 한 후 다시 시작하는 것이 좋습니다. 나는 이것이 어떤 간단한 방법으로도 가능하지 않다고 생각한다. 귀하는 귀하의 "신청 상태"가 무엇을 의미하는지 반드시 이해해야합니다. 생각해보십시오. 메모리를 덤프하면 데이터뿐만 아니라 현재 명령어 포인터도 절약됩니다. 따라서 "벙어리"덤프를 사용하면 현재 실행중인 실제 명령어를 저장했을 것입니다. 그리고 더 많은 합병증은 당신이 정말로 신경 쓰고 싶지 않습니다.

당신이 생각하고있는 가장 가까운 것은 가상 머신에서 프로그램을 실행하는 것입니다. VM을 일시 중지하면 실행 상태가 "저장"되지만 VM을 다시 시작할 때마다 일시 중지 한 실행 지점에서 프로그램이 다시 시작됩니다.

구성이 응용 프로그램을 통해 분산되어있는 경우에도 모든 것을 저장하는 데 사용되는 전역 구조체에 액세스 할 수 있습니다. 하지만 여전히 프로그램을 알고 저장해야하는 것을 식별해야합니다. 그것에 대한 바로 가기가 없습니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 내가 알고 싶은 것은 모든 데이터를 유지하기 위해 Struct을 정의하는 방법입니다. 저장하려는 변수는 수백 가지 기능에 분산되어 있습니다. 그래서 나는 스택 영역이나 힙 영역 메모리를 저장하고로드 할 수 있다면 더 쉬울 수도 있지만 솔루션을 찾을 수 없다고 생각합니다. – user2775054

관련 문제