Windows/Dev
[VC++] 문자열 복사, 이동
Codetronik
2024. 5. 9. 14:16
string a = "hello man world girl";
cout << static_cast<void*>(a.data()) << endl;
cout << a << endl;
string b = a;
cout << static_cast<void*>(b.data()) << endl;
cout << b << endl;
string c = move(a);
cout << a << endl;
cout << static_cast<void*>(a.data()) << endl;
cout << static_cast<void*>(c.data()) << endl;
cout << c << endl;
b = a을 하게 되면 복사가 일어난다. 즉, 객체의 생성 -> 복사 -> 파괴가 두번 발생한다.
move 의 경우, 객체의 생성 후 이동만 발생한다. a의 allocator가 c로 이동되며, 이동 후 a의 allocator에는 빈 값과 빈 버퍼가 들어간다.