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에는 빈 값과 빈 버퍼가 들어간다.
'Windows > Dev' 카테고리의 다른 글
detours 빌드 및 적용 (0) | 2024.04.11 |
---|---|
[Visual Studio 2022] curl 빌드 (0) | 2023.01.30 |
[VC++] string deallocate (0) | 2022.05.23 |
get EIP (gcc / vc) (0) | 2019.04.11 |
C용 초경량 XML 파서 : Mini-XML 소개 및 사용법 (0) | 2017.06.29 |