[C++] 이동 시맨틱 : lvalue, rvalue, std::move
개요 안녕하세요. 이번 글에서는 C++11에서 도입된 이동 시맨틱(move semantics)에 대해 알아보겠습니다. 기존 C++에서는 객체를 다른 곳에 넘길 때 항상 복사가 일어났습니다. 그런데 곧 사라질 임시 객체까지 굳이 복사하는 것은 낭비입니다. …
개요 안녕하세요. 이번 글에서는 C++11에서 도입된 이동 시맨틱(move semantics)에 대해 알아보겠습니다. 기존 C++에서는 객체를 다른 곳에 넘길 때 항상 복사가 일어났습니다. 그런데 곧 사라질 임시 객체까지 굳이 복사하는 것은 낭비입니다. …
한국어로는 “~할 거야 / ~할 것이다” 하나로 말하지만, 영어의 미래 표현은 will과 be going to로 나뉩니다. 둘 다 미래를 가리키지만 뉘앙스가 다릅니다. 핵심 기준은 그 일을 지금 막 정했는가, 아니면 …
개요 안녕하세요. 이번 글에서는 C++의 스마트 포인터(smart pointer)에 대해 알아보겠습니다. C++에서 new로 할당한 메모리는 delete로 직접 해제해야 하는데, 해제를 빠뜨리거나 중간에 예외가 발생하면 메모리 누수(memory leak)가 생깁니다. 스마트 포인터는 이런 …
한국어로는 다 ‘~했다’지만 영어는 단순 과거와 현재완료를 구분합니다. 과거 시점이 분명하면 과거, 지금과 연결되면 현재완료 — 비교표와 헷갈리는 짝(been to vs gone to, for vs since)까지 정리합니다.
같은 ‘~해야 한다’라도 영어는 have to, must, need to, should, be supposed to로 강도와 뉘앙스가 다릅니다. 각 표현의 차이와 부정형(don’t have to vs must not)을 예문으로 정리합니다.
개요 안녕하세요. 이번 글에서는 C, C++ 에서 구조체 분석을 할 때 자주 사용되는 함수에 대해 알아보겠습니다. offsetof와 _countof 매크로 함수는 구조체에서 특정 변수의 위치나, 배열의 개수를 얻고 싶을 때 자주 …
이번 글에서는 xUnit에 대해 알아보겠습니다. 개발을 하다 보면 개발한 클래스나 함수에 대해 테스트가 필요할 때가 있습니다. 수동으로 값을 대입하거나, 화면상으로 눌러가며 테스트도 하지만 코드가 방대해지면 자동화된 단위 테스트는 필수가 됩니다. …
이번 글에서는 TCP 통신으로 Server와 Client를 만들어 보겠습니다. 전체적인 코드는 github을 참고해주시기 바랍니다. 주요 클래스, 함수 우선 서버 쪽 필수 클래스는 TcpListener입니다. TcpListener의 핵심 코드들은 아래와 같습니다. 클라이언트 쪽 클래스는 …
이번 글에서는 Named Pipe에 대해 알아보겠습니다. Named Pipe는 로컬 PC에서 서로 다른 프로그램끼리 데이터를 주고받는 IPC(Inter-Process Communication) 기술 중 하나 입니다. 프로그램 끼리 파이프에 이름을 붙여 통신을 한다고 보시면 됩니다. …
이번 글에서는 UDP 통신에 대해 알아보겠습니다. UDP에 대한 설명은 기존 글에도 많으니 설명보단, 만드는법 위주로 알아보겠습니다. C#으로 UDP 통신 하는 방법은 굉장히 간단합니다. UdpClient 클래스를 사용하면 됩니다. UdpClient UdpClient는 C#에서 …