분류대기 (14) 썸네일형 리스트형 Segmentation fault 사례 [1. 개요]C++ 코드 작성 시, 발생한 segmentation fault 사례 및 해결 방안 정리[2. 예제]#include #include #include #include struct MyStruct { long long a; int b; char c[32]; std::string d;};std::deque dq;void GetAndErase(MyStruct& ref){ if (dq.size() > 0) { ref = dq.back(); // seg fault 가 발생하는 순간. dq.pop_back(); }}int main(){ { MyStruct item; strcpy(item.c, "Hello_World").. Socket, 멀티 캐스트 & 브로드 캐스트 [1. 개요]멀티 캐스트(Multicast) 통신에서 데이터 전송은 특정 그룹에 등록되어 있는 다수의 호스트를 대상으로 한다.즉, 한번에 전송으로 다수의 호스트가 이를 수신 할 수 있다는 것이다. 이러한 멀티 캐스트 통신은 UDP 를 기반으로 하며, 라우터의 도움이 필요하다.라우터가 패킷을 복사하여 다수의 호스트에 이를 전달.라우터가 멀티 캐스트를 지원하지 않을 수 도 있다.특정 그룹은 클래스 D 에 속하는 IP 주소를 대상으로 한다.224.0.0.0 ~ 239.255.255.255브로드 캐스트(Broadcast) 통신 역시 UDP 를 기반으로하며, 멀티 캐스트와 유사하나, 전송 범위에서 그 차이가 있다.동일 네트워크에 속해있는 호스트로 그 대상이 제한된다.또한, 브로드 캐스트 통신이라 하더라도 IP 주.. 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() 를 호출하면 출력 버퍼가 비워진다.. [인코딩] EUCKR [1. 개요]EUC-KR 인코딩 방식에 대해서 정리한다. EUC-KR 은 멀티바이트 형태의 문자 인코딩 방식이다.영문 및 특수문자는 1 byte한글 및 한자는 2 bytes첫번째 바이트의 값 범위에 따라서, 몇 바이트로 표현된 문자인지 확인 할 수 있다.0x00 ~ 0x7F : 1 byte0xA1 ~ 0xFE : 2 bytes 2 bytes 로 표현하는 경우는첫번째 바이트 값의 범위는 0xA1 ~ 0xFE 두번째 바이트 값의 범위는 0xA1 ~ 0xFE두 바이트 모두 값의 범위가 0xA1 ~ 0xFE 이 되야만 한다. [2. 예제] [3. ref]https://i18nl10n.com/korean/euckr.html [인코딩] UTF-8 [1. 개요]UTF-8 인코딩 방식에 대해서 정리한다. UTF-8 은 멀티바이트 형태의 문자 인코딩 방식이다.경우에 따라 문자 하나를 1바이트 혹은 2바이트, 3바이트 최대 4바이트로 인코딩 한다.첫번째 바이트의 bit 패턴을 통해서, 몇 바이트로 표현 된 문자인지 알 수 있다.첫번째 byte 의 bit 패턴이 다음과 같을 때,b0xxx_xxxx => 1byteb110x_xxxx => 2byteb1110_xxxx => 3byteb1111_0xxx => 4byte그리고 인코딩 된 바이트 수에 따라서 인코딩 패턴은 아래와 같다.1byte : b0xxx_xxxx2byte : b110x_xxxx, b10xxxxxx3byte : b1110_xxxx, b10xxxxxx, b10xxxxxx4by.. [리눅스] goto 사용 시 컴파일 [1. 개요]c++ 코드 작성 시, goto 문이 필요한 경우동일한 코드라도 컴파일러 종류에 따라서 컴파일이 될 수도 있고 안될 수 있다.윈도우 msvc 컴파일러는 허용 폭이 관대한 편이고,리눅스 g++ 컴파일러는 굉장히 타이트 한 편인 것 같다.[2. 예제]아래 코드는 리눅스에서 컴파일이 안된다.#include int main(int argc, char **argv){ if (argc == 1) { goto EXIT; } int a=3; int b=4; std::cout error: jump to label ‘EXIT' 이라는 에러가 발생.원인은 변수의 선언이 goto 문과 와 goto 할 label 사이에 있.. [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.. swagger-editor 설치 [1. 개요]swagger 란? 관련 설명을 작성하도록.swagger-editor 는 swagger 파일을 좀 더 편하게 작성하기 위한 하나의 도구.[2. 설치 개요]기본적으로 docker image 를 제공함.여기서는, 소스코드를 다운 받아 직접 설치하는 과정을 기술하도록 한다.먼저, node.js 가 설치되어 있어야 한다.node.js 를 설치하면 npm 은 자동으로 설치 된다.현재 설치 된 버전은# node.js : 12.18.3# npm : 6.14.6Node.js >=20.3.0 and npm >=9.6.7 are the minimum required versions that this repo runs on최신 버전 4.13.1 에서는 설치가 잘 안됨.v4.9.2 에서는 되었음. (ht.. 이전 1 2 다음