본문 바로가기

c++

(5)
Segmentation fault 해결 (C++) [1. 개요]C++ application 에서 발생한 Segmentation fault(Core dumped) 오류 해결 사례[2. 원인]재귀 함수의 recursion 이 깊어지는 경우 주로 발생했는데,아래 컴파일 경고가 발생한 함수에서 런타임 오류가 발생waring: control reaches end of non-void function [3. 해결]해당 함수의 리턴은 딱히 쓰는 데가 없어서 함수의 return type 을 void 로 바꿈.[4. 결론]함수의 리턴 값을 정확히 명시하지 않는 경우, 최악의 상황에서 app 이 crash 가 발생할 수 있다.
윈도우 컴파일 에러. [No Target Architecture] [1. 개요]윈도우 System api 를 사용해서, c++ application 소스 코드 작성 후, cmake 를 이용하여, 윈도우 visual studio 빌드 환경을 구축하였다. 컴파일을 진행 하니, Fatal error: "No Target Architecture" 가 발생하면서, 컴파일 실패함.[2. 해결 방법]여러가지 솔루션들이 있었으나, 나의 경우#include 를 다른 윈도우 api header 보다 먼저 include 하는 것 이었다.// Before#include #include #include /*****/ // After#include /*****/#include #include  그 외 부가적으로, CMAKE_GENERATOR_PLATFORM 를 x64 로 명시WIN32_L..
소켓 Linger 옵션 [1. 개요]C++ 를 이용하여 서버 프로그램 작성 시, accept 된 소켓 (이하 클라이언트 소켓) 과 통신 시 발생한 문제서버: send() 후, 클라이언트 소켓에 대해서 close() 함클라이언트:  서버로 부터 응답을 받지 못하고, connection reset 이 발생서버: close() 전, shutdown() 을 이용해서 출력 스트림만 종료하여 출력 버퍼가 비워지도록 수정.클라이언트:  서버 응답 패킷 크기가 작은 경우는 응답을 받았지만, 패킷 크기가 큰 경우는 여전히 동일한 문제가 발생위와 같은 문제의 원인은, 클라이언트 소켓을 대상으로 close() 한 것이 문제인데,보통 file descriptor (text 파일 같은 것) 를 대상으로 close() 를 호출하면 출력 버퍼가 비워진다..
[C++] struct byte align [1. 개요]구조체 작성 시, 메모리 접근 및 구조체 크기 개선을 위한 byte align 관련 하여 정리한다.[2. 예제]#include struct A { char a; // 1byte int b; // 5byte char c[2]; // 7byte};struct B { char a; // 1byte int b; // 5byte char c; // 6byte};struct C { char a; // 1byte char c; // 2byte int b; // 6byte};struct AA { char a; // 1byte char c[2]; // 3byte int b; // 7byte};i..
Window, C++, 예외처리 [1. 개요] 윈도우 환경에서 C++ 애플리케이션 작성 시, 예외처리 방법을 정리한다. try ~ catch __try ~ __except (SEH) Unhandled Exception Filter [2. try ~ catch] 표준 C++ 에서 제공하는 예외 처리 방법 throw 키워드를 이용해 명시적으로 발생시킨 예외를 제어한다. catch 에서 예외를 전부 제어할 수 없는 경우, 비정상 종료가 발생한다. [3. __try ~ __except] 윈도우 에서 제공하는 예외 처리 방법 # 리눅스에서는 사용 불가 (?) SEH (=Structured Error Handling) 이라고 부른다. [4. Unhandled Exception Filter] [5. GetExceptionCode() ] 발생한 ex..