[C++] 멤버카피와 대입연산자에 관하여(memcpy vs operator =) 본문
반응형
안녕하세요.
C++을 이용한 프로그램을 작성한다면 사소하지만 신경써야 할 부분에 관하여 포스팅하겠습니다.
일반적으로 작업을 하다보면
클래스나 구조체를 다른 객체로 복사할 경우 memcpy를 이용할지 =(operator)를 이용할지 판단이 어려운 경우가 있습니다.
아니면 그냥 무조건적으로 =를 사용하고 계신 분들이 있을 수도 있습니다.
memcpy와 operator=의 특성과 주의점을 잘 파악해 상황에 따라 이용하도록 합시다
* memcpy
작동 방식 : 구조체(클래스) 크기의 메모리를 복사한다
속도 : 빠르다
주의 사항 : 일반적인 MFC구조체(ex:CString)와 같은 별도로 관리하는 메모리나 포인터같은 변수가 있을 경우 오작동의 우려가 있음. 메모리 크기를 정확하게 대입해야함
* operator =
작동 방식 : 하위 멤버 변수를 일일히 =(대입)하여 복사한다
속도 : 느리다
주의 사항 : 개별적으로 = 를 하여 안정성은 뛰어나나, 원본과 완벽하게 동일한 메모리 구조를 보장하지 않는다. (복사 연산자(=)가 정의되지 않은 멤버변수(사용자정의자료형 등)가 있는 경우)
추가로 멤버 변수에 복사가 불가능한 변수가 포함되어 있는 경우에 주의하며 사용하여야 한다
반응형
'프로그래밍 > ㄴ기타' 카테고리의 다른 글
[Unity] Display 2-D Array in Inspector, 2차원 배열 인스펙터에 표시하기 (0) | 2019.10.25 |
---|---|
[Unity] Animation vs Tween 비교 (0) | 2019.10.25 |
[Unity] split application binary에서 Application.dataPath가져오기 (0) | 2019.07.19 |
[CMD] Windows Batch Command를 이용해 APK Manifest 분석하기 (0) | 2019.06.13 |
[Unity] Batchmode 함수 호출을 이용해 빌드하기 (2) | 2019.06.11 |
Comments