C++에서 반드시 피해야 할 함정: 댕글링 레퍼런스 C++ 프로그래머라면 누구나 한 번쯤 겪게 되는 골치 아픈 문제, 바로 댕글링 레퍼런스(Dangling Reference)입니다. 레퍼런스를 반환하는 함수를 잘못 작성했을 때 발생하는 이 현상은 프로그램 크래시의 주범이 되기도 합니다. 왜 이런 일이 벌어지는지, 어떻게 해결해야 하는지 함께 알아봅시다. 1. 문제의 핵심: 댕글링 레퍼런스란? 👻 댕글링 레퍼런스(Dangling Reference)는 '매달려 있는' 또는 '허공을 가리키는' 참조를 뜻합니다. 참조(Reference)는 이미 존재하는 객체의 별명인데, 원본 객체가 사라지고 없는데도 별명만 남아있는 상태를 말합니다. 이런 참조를 사용하면 프로그램이 잘못된 메모리 영역을 건드리..
C 언어 vs C++: `struct`와 `typedef`의 차이점 완벽 정리 C 언어를 공부하다 보면 struct MyStruct와 typedef struct MyStruct라는 두 가지 형태의 구조체 선언을 자주 보게 됩니다. 겉보기에는 비슷해 보이지만, 둘 사이에는 명확한 차이점이 있습니다. 이 글에서는 두 방식의 차이점을 쉽게 알아보고, 왜 C에서는 typedef가, C++에서는 전자가 더 많이 사용되는지 알려드릴게요. `struct`만 사용한 구조체 선언 이 코드는 MyStruct라는 이름의 구조체 태그(tag)를 정의합니다. 여기서 MyStruct는 구조체의 별명이 아니라, struct 키워드와 함께 사용해야 하는 진짜 이름입니다. 마치 '과일'이라는 카테..
순수 C++로 RSA 키 PEM 저장 및 불러오기🧠 설명 이 코드는 OpenSSL 없이 순수 C++만을 이용하여 RSA 2048비트 키를 PEM 파일 형식으로 저장하거나 불러올 수 있도록 구현한 예제입니다. 공개키, 개인키 모두 지원하며, KCMVP 인증용, 경량 시스템, 보안 제품 개발 시 매우 유용합니다.🧩 원인 외부 라이브러리에 의존하지 않고 독립적인 PEM 처리 구현 필요 KCMVP, CC 인증 등 보안 요구사항 충족 경량 OS 또는 보안 펌웨어에서 사용 목적🧰 핵심 기능 PEM 파일에서 Base64 부분 추출: LoadPem() Base64 ↔ 바이너리 변환: Base64Encode(), Base64Decode() PEM 저장: SavePrivateKeyToPemFile(..

namespace util { class CryptoUtil { DECLARE_NO_COPY_CLASS( CryptoUtil ); public: CryptoUtil() = default; ~CryptoUtil() = default; static std::string GetMD5Hash( const std::string& _ssInput ); static std::string GetSHA256Hash( const std::string& _ssInput ); static std::string GetSHA512Hash( const std::string& _ssInput ); static std::string GetSHA1Hash( const std::string& _ssInput ); stati..

C++ 크로스 플랫폼 에러 처리 시스템 설계✅ 개요Windows의 GetLastError()와 같은 방식의 에러 핸들링 시스템을 C++로 구현합니다. 이 시스템은 다음을 포함합니다:Thread Local Storage 기반 에러 저장프로젝트 공통 에러 코드 정의에러 메시지 출력 (다국어 지원 가능)에러 로그 기록운영체제의 시스템 에러 코드 매핑1. ❌ 에러 코드 정의 - ErrorCode.hppenum class ErrorCode { OK = 0, UNKNOWN, INVALID_PARAM, NULL_POINTER, FILE_NOT_FOUND, TIMEOUT, NETWORK_FAIL, PERMISSION_DENIED, SYSTEM_ERROR,};2. TLS ..

C++에서 UTC ↔ KST 변환하는 방법C++에서 현재 시간을 UTC(세계 협정시) 및 KST(한국 표준시, UTC+9)로 변환하는 방법을 정리합니다.C++98 / C++03 (std::time)UTC 시간 가져오기#include #include int main() { std::time_t now = std::time(nullptr); std::tm* gmt = std::gmtime(&now); std::cout tm_year + 1900) tm_mon + 1) tm_mday tm_hour tm_min tm_sec KST (한국 표준시) 가져오기#include #include int main() { std::time_t now = std::time(nullptr); std::..
- Total
- Today
- Yesterday
- Thread
- 디자인패턴
- 제주도
- 윈도우
- ReFS
- Build
- 암호화
- C#
- 블루버블다이빙팀
- 스쿠버다이빙
- Windows
- 블루버블다이브팀
- C# 고급 기술
- 현포다이브
- 블루버블
- 다이빙
- 리눅스
- 서귀포
- 서귀포블루버블
- Linux
- 울릉도
- PowerShell
- 성산블루버블
- C++
- DLL
- CMake
- 패턴
- ip
- C
- OpenSource
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |