C/C++에서 메모리 관리 C/C++은 Java처럼 Garbage Collctor가 자동으로 메모리를 관리해주는 언어와는 다르다. 개발자가 직접 메모리를 할당하고 해제해야 하기 때문에, 메모리 관리에 각별한 주의가 필요하다. 예를 들어 C에서는 malloc과 free를
I/O 작업이 완료될 때까지 프로그램이 멈춰있는 방식이다.read 함수가 호출되면 데이터가 도착할 때까지 프로그램이 대기한다. 그렇다는 건, 데이터 안 오면 하염없이 계속 기다린다는 것이다. Single Thread 환경에서는 한 Socket이 Blocking 걸리면
1. 매번 Thread를 생성하는 방식의 문제점 요청마다 Thread를 생성하고 사용한 뒤 삭제하는 방식으로 구현해본 적 있는가? 이 방식은 생각보다 치명적인 문제들을 가지고 있다. 성능 문제 Thread 생성은 꽤 무거운 작업이다. OS 레벨에서 스택 메모리를 할
Mutex(Mutual Exclusion) Mutex는 멀티스레드 환경에서 공유 자원에 대한 접근을 제어하는 동기화 객체다. 여러 개의 스레드가 동시에 같은 자원에 접근할 때 발생할 수 있는 Race Condition을 방지하기 위해 사용된다. 코드 예시 위 예시
Socket Chatting 프로그램을 개발하면서 지정한 buffer보다 큰 메시지가 보내지면 어떻게 처리해야 할지 궁금했다.해결방법을 이 글에 정리해보고자 한다.bytes의 크기는 얼마일까? 10? 20? 정답은 "알 수 없다."이다.서버가 클라이언트로부터 받는 데이
개인 프로젝트를 하면서 constexpr을 알게 되었다. const와 constexpr 차이는 이해했다. 하지만 const만으로도 충분해 보이는데, 왜 굳이 constexpr가 필요한 건지 궁금했다. 정보를 찾은 결과를 이 글에 남겨보고자 한다.값을 변경할 수 없다는