[C++] 세그먼테이션 오류가 자꾸 뜨는데 왜이러는 건가요


(LoLB) #1
int main()

{
    std::cout << "Test Point1" << std::endl;
	AAA aaa;
	aaa.name = "My Name";
	aaa.num1 = 10;
    aaa.num2 = 20;

	FILE * fp = fopen("data1.bin", "wb");
    fwrite(&aaa, sizeof(aaa), 1, fp);
	
    fclose(fp);

	std::cout << "Test Point2" << std::endl;

	AAA aaa2;
	
	FILE * fp = fopen("data1.bin", "rb");

    fread(&aaa2, sizeof(aaa2), 1, fp);
    std::cout << aaa2.name << std::endl;
	
	fclose(fp);
	
	return 0;
}

쓸 땐 문제 없는데 읽어오기를 하면 자꾸 세그먼테이션 오류가 뜨는데 왜 이러는건가요


(ㄴㅂㄷㄱㄷㄱ) #2

이게 되요?


이게 상관 있으려나


(L) #3

객체 직렬화를 하려고 하신것 같은데…
그런식으로 일일히 다 하시기보단 라이브러리를 쓰시는게 좋습니다.
boost::serialization 이라던가, google protobuffer 같은거 말이죠…


(ㄴㅂㄷㄱㄷㄱ) #4

저는 읽어오는 것 까지는 되는데

a.out(17735,0x7fff93aae380) malloc: *** error for object 0x7f86ce500000: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug

이렇게 뜨네요

하하

아마 AAA struct 안에 있는
string name;
에서 말썽이 일어나는 것 같음니다

data serialization 은 역시 라이브러리 쓰는 게 답