바이너리(2진수) 저장 아시죠? 그런데 포인터 변수를 만들어서 동적 할당을 했을때 그 포인터 변수도 포함되어 저장되면 정상적으로 저장이 안 되는 건가요? 왜 그러냐면 제가 저장 방식을 모든 데이터를 하나의 클래스 속에 넣어서 그 1개의 클래스 인스턴스를 동째로 Write 함수로 쑤셔넣어서 하게 했는데 문자열 클래스가 제대로 들어가지지가 않아서요 ㅡ.ㅡ;;
아마도 CString 함수를 쓰셨겠죠? 여기서 CString은 문자열 값을 모두 가지지 않고 어떤 주소를 가리키는 포인터 값입니다. 그러니까 Write 당시에는 문자열이 있는 위치를 가리키고 있었겠지만 로드해보면 그 위치에 문자열이 사라져 있어서 에러가 나는 겁니다. 각주구검 아십니까? 그거 비슷한 겁니다.
문자열을 저장하려면 포인터가 가리키는 위치에 있는 메모리까지 모두 저장해야 합니다. CString::GetBuffer()같은 것을 이용해서 말이죠. 그리고 저장용으로 CString을 안 쓰는 게 좋을 겁니다. 쓸데없는 데이터들도 저장하기 때문에. 아까 말한 이미 존재하지 않는 문자열을 가리키고 있는 포인터 값이라든가... 저장은 그냥 char* 형으로 하세요. (물론 주소값만 저장하면 결과는 마찬가지입니다.)
여기서 CString은 문자열 값을 모두 가지지 않고 어떤 주소를 가리키는 포인터 값입니다.
그러니까 Write 당시에는 문자열이 있는 위치를 가리키고 있었겠지만
로드해보면 그 위치에 문자열이 사라져 있어서 에러가 나는 겁니다.
각주구검 아십니까? 그거 비슷한 겁니다.
문자열을 저장하려면 포인터가 가리키는 위치에 있는 메모리까지 모두 저장해야 합니다.
CString::GetBuffer()같은 것을 이용해서 말이죠.
그리고 저장용으로 CString을 안 쓰는 게 좋을 겁니다. 쓸데없는 데이터들도 저장하기 때문에.
아까 말한 이미 존재하지 않는 문자열을 가리키고 있는 포인터 값이라든가...
저장은 그냥 char* 형으로 하세요. (물론 주소값만 저장하면 결과는 마찬가지입니다.)