본문 바로가기

관리 메뉴

[C++] 멤버카피와 대입연산자에 관하여(memcpy vs operator =) 본문

프로그래밍/ㄴ기타

[C++] 멤버카피와 대입연산자에 관하여(memcpy vs operator =)

최갓 2019. 9. 30. 11:29
반응형

안녕하세요. 

C++을 이용한 프로그램을 작성한다면 사소하지만 신경써야 할 부분에 관하여 포스팅하겠습니다.

 

일반적으로 작업을 하다보면

클래스나 구조체를 다른 객체로 복사할 경우 memcpy를 이용할지 =(operator)를 이용할지 판단이 어려운 경우가 있습니다.

아니면 그냥 무조건적으로 =를 사용하고 계신 분들이 있을 수도 있습니다.

 

 

memcpy와 operator=의 특성과 주의점을 잘 파악해 상황에 따라 이용하도록 합시다

 

* memcpy

작동 방식 : 구조체(클래스) 크기의 메모리를 복사한다

속도 : 빠르다

주의 사항 : 일반적인 MFC구조체(ex:CString)와 같은 별도로 관리하는 메모리나 포인터같은 변수가 있을 경우 오작동의 우려가 있음. 메모리 크기를 정확하게 대입해야함

 

* operator = 

작동 방식 : 하위 멤버 변수를 일일히 =(대입)하여 복사한다

속도 : 느리다

주의 사항 : 개별적으로 = 를 하여 안정성은 뛰어나나, 원본과 완벽하게 동일한 메모리 구조를 보장하지 않는다. (복사 연산자(=)가 정의되지 않은 멤버변수(사용자정의자료형 등)가 있는 경우)

 

 

추가로 멤버 변수에 복사가 불가능한 변수가 포함되어 있는 경우에 주의하며 사용하여야 한다

반응형
Comments