이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

반응형

코딩/C and C++ 14

"\n" 과 "endl" 의 차이점

"\n" 과 "endl" 의 차이점 \n과 endl 모두 출력할 때 개행(줄 띄움)을 위해 사용한다. 둘의 차이는 endl은 출력 버퍼를 비워주는 과정(flush)이 들어가 있어서 \n보다 느리다. 버퍼는 입출력을 프로그램에 바로 전달하지 않고 임시 메모리 공간에 저장한 후 한번에 전송하는 역할을 한다. 버퍼를 즉시 비우고 싶다면 endl을 그렇지 않다면 \n을 사용한다. 하지만 구현체(ex printf, println, cout 등등의 출력 함수)에 따라서 "\n"도 버퍼를 비우도록 처리하는 경우도 있다고 한다.

코딩/C and C++ 2022.10.03

malloc calloc realloc의 차이점

malloc calloc realloc의 차이점 malloc 리턴 타입이 void* 즉 보이드 포인터다. 동적할당의 경우 어떤값을 리턴할지 명시해놓을 수 없기 때문에 void 로 리턴함. 할당된 메모리를 초기화하지 않기 때문에 쓰레기값이 그대로 들어가있다. calloc 리턴 타입이 void* 즉 보이드 포인터다. malloc 과는 다르게 할당된 메모리를 0으로 초기화 한다. realloc malloc 이나 calloc 을 통해 할당된 메모리의 공간을 더 늘리거나 줄이기 위해 사용된다. 무조건 필요한 만큼 메모리 공간이 있다는 가정하에 해야한다. 만약에 기존의 공간이 충분하지 않은경우를 예로 설명을 하자면 malloc 으로 10의 공간을 할당한 후에 realloc 으로 5만큼의 공간을 늘리려는데 mallo..

코딩/C and C++ 2022.10.03

C++ gtest

C++ gtest gtest란? Google Test Framework로 유닛 테스트에 사용됨. Google Test는 Google의 특정 요구사항 및 제약사항을 기반으로 테스트 기술팀에서 개발한 Testing 프레임워크임. gtest Git 링크 https://github.com/google/googletest 컴파일러 C ++ 11 표준 이상을 준수하는 코드베이스 및 컴파일러가 필요함. gcc 5.0 이상 clang 5.0 이상 MSVC 2015+ 사용 가능 OS Linux, Windows, Mac 왜 Google Test를 사용해야 하나? 1. 테스트는 독립적이고 반복가능해야 합니다. gtest는 디버깅을 빠르게 할 수 있도록 테스트를 분리시켜 실행할 수 있도록 해 줌. 2. 테스트는 조직화가 잘 ..

코딩/C and C++ 2022.01.02

C++ WMI library사용

C++ WMI library사용 목적 C++로 Windows OS 종류를 확인해야 했었음. 방법을 찾다가 WMI에 대해 알게되었음. WMI에 대해 알아보도록 함. WMI(Windows Management Instrumentation) 란? WMI란 Windows Management Instrumentation으로 Windows에 대한 Microsoft의 주요 관리 기술이라고 불려짐. MS에서 확인해보면 WMI 설명이 약간 복잡하게 되어있는데 요약해서 중점만 설명하자면 WMI는 원격으로 Windows host의 정보를 확인 할 수 있는 tool임. 알아보고자 하는 windows host의 network 정보, host name, 계정 정보 등 각종 windows 리소스를 확인 할 수 있음. WMI는 hos..

코딩/C and C++ 2021.12.22

C++ windows 로컬 그룹 정책 확인

C++ windows 로컬 그룹 정책 확인 목표 windows의 로컬 그룹 정책 값을 C++에서 확인. 예제로 로컬 그룹 정책 중에서 보안설정 > 로컬 정책 > 보안 옵션 > 네트워크 액세스 : 익명 SID/이름 변환 허용 (Access allow anonymous SID/Name Translation) 항목 설정값을 확인하는것이 목표. [로컬 그룹 정책 편집기 실행 단축키] Win+R gpedit.msc 로컬 그룹 정책 확인할 수 있는 다양한 방법 로컬 그룹 정책을 확인 할 수 있는 방법들로는 NetUserModalsGet 함수 사용, Registry, secedit로 총 4가지 방법이 있음. 순서대로 장,단점을 비교해보도록함. NetUserModalsGet 함수 사용 (결과 : 일부 사용 가능) [H..

코딩/C and C++ 2021.12.22

C++ Windows console 결과 영어로 출력

C++ Windows console 결과 영어로 출력 목표 OS 언어 설정이 한글로 되어있으면 cmd 창에서 각종 명령을 확인할 때 문자가 한글로 표현됨. 이때 한글을 영어로 출력되도록하는 방법을 알아보도록함. SetConsoleOutputCP 함수 사용 영어 : SetConsoleOutputCP(437) 한글 : SetConsoleOutputCP(949) 예제 int main() { SetConsoleOutputCP(437); // 가장 상단에 사용. ~~~~~ (코드 내용) return 0; } 사용 결과 powershell 에서 auditpol 명령 결과를 확인하는 경우 한글인 경우 영어인 경우 하지만 위에서 확인되는것과 같이 언어 설정이 한글인 OS에서 영어로 출력하는 경우 결과는 영어로 정상적으..

코딩/C and C++ 2021.12.22

동적라이브러리 (DLL) 코딩 및 적용

동적라이브러리 (DLL) 만들기 1. 프로젝트 생성 Visual Studio → New Project → Win32 Project → Project, Solution name : DLibrary → OK 2. Header 파일 #pragma once #ifdef MAKE_DLL_TEST_EXPORTS //파일명(프로젝트명)_EXPORT #define DLLTEST_API __declspec(dllexport) // 파일명_API __declspec(dllexport) #else #define DLLTEST_API __declspec(dllimport) // 파일명_API __declspec(dllexport) #endif extern "C" DLLTEST_API int dll_test_sum(int , ..

코딩/C and C++ 2020.11.30

네임드 파이프 (Named-Pipe)

네임드 파이프 (Named-Pipe) 네임드 파이프 란? 익명 파이프(Pipe) 통신을 할 프로세스가 명확하게 알 수 있는 경우 사용 자식과 부모 프로세스간 통신의 경우에 사용 가능 [단점] PPID(같은 부모 프로세스)를 가지는 프로세스들 사이에서만 통신이 가능 전혀 모르는 상태의 프로세스들 사이의 통신의 경우 사용 네임드 파이프 (Named Pipe) Named Pipe는 Pipe의 단점을 해결한, Pipe의 확장이라고 할 수 있음 이름을 가진 PIPE 를 통해서 프로세스들 간에 단방향 통신을 지원 서로 다른 프로레스들이 PIPE 의 이름만 알면 통신이 가능함 [단점] 읽기/쓰기가 동시에 불가능함, read only, write only 만 가능 해당 단점을 해결하기 위해 보통 pipe 하나를 읽기전..

코딩/C and C++ 2020.10.04

C++에서 JSON 사용

C++에서 JSON 사용 JSON 라이브러리 적합성과 성능을 평가한 링크 c++ 의 json 라이브러리 = JSONKIT, jsoncpp, rapidjson, zoolib, jvar 등등 대표적으로 많이 사용되는 jsoncpp, Rapid Json, nlohmann json이 있음. 참고 : https://github.com/miloyip/nativejson-benchmark JSON 설명 글 이동 JSON Jsoncpp 사용법 사용법 1 jsoncpp 를 library 로 만들지 않고 단일 source 와 header 로 만들어서 프로젝트에 포함 1. jsoncpp download download link : https://github.com/open-source-parsers/jsoncpp 2. 다운..

코딩/C and C++ 2020.09.13
반응형