Thread와 싱글톤 상속의 문제점싱글톤과 Thread 클래스를 동시에 상속받는 것은 초기에는 코드가 간단해 보일 수 있지만, 실제로는 런타임 오류와 메모리 관리 문제를 일으킬 수 있는 설계상 큰 위험 요소입니다. 이 두 가지 상속의 문제점과 해결책을 정리해 보았습니다.문제점수명 관리 문제싱글톤 객체는 프로그램이 종료될 때까지 유지되지만, Thread 객체는 독립적으로 실행 및 종료되어야 합니다. 두 객체를 동시에 상속받을 경우, 싱글톤 객체의 수명이 Thread의 종료 타이밍에 영향을 미칠 수 있어 DLL 언로드나 프로그램 종료 시점에서 예기치 않은 문제가 발생할 수 있습니다.컴파일 타임 검증의 부재C++에서는 기본적으로 두 클래스를 상속받는 것에 대해 명시적인 제한이 없기 때문에, 개발자는 이러한 설..
#pragma pack 지시자는 구조체, 클래스, 또는 유니언의 멤버들이 메모리에 어떻게 배치되는지를 제어하는 데 사용됩니다. 기본적으로 컴파일러는 멤버들을 특정 바이트 경계에 맞추기 위해 패딩을 추가하여 최적의 성능을 보장하지만, 특정 상황에서는 이 패딩을 제거하고 메모리 사용을 최소화해야 할 필요가 있습니다. 이를 위해 #pragma pack을 사용하여 멤버들의 정렬 단위를 변경할 수 있습니다.#pragma pack 사용법#pragma pack(push, 1)과 #pragma pack(pop)은 구조체, 클래스, 유니언의 멤버 정렬을 제어하는 데 사용됩니다. 이 설정은 데이터 패딩을 줄여 메모리 사용을 최적화하거나, 파일 포맷 및 네트워크 프로토콜과 같은 특정 데이터 포맷과의 호환성을 위해 자주 사용..
사설 인증서 발급 방법 1. OpenSSL을 이용한 사설 인증서 발급 1.1. OpenSSL 설치 Windows에서는 OpenSSL for Windows를 설치합니다. Linux나 macOS에서는 패키지 관리자를 이용해 설치할 수 있습니다. 1.2. 사설 CA 키와 인증서 생성 사설 CA의 비밀키와 인증서를 생성합니다: openssl genpkey -algorithm RSA -out ca-key.pem -aes256 openssl req -x509 -new -nodes -key ca-key.pem -sha256 -days 3650 -out ca-cert.pem ..
사설 인증서를 이용한 코드 서명 및 검증 1. 사설 인증서를 이용한 코드 서명 및 검증 개요: 사설 인증서를 사용해 폐쇄망에서 코드 서명(Code Signing)을 구현하는 방식입니다. 이때 인증서와 코드 서명을 통해 파일의 무결성과 신뢰성을 검증할 수 있습니다. 사설 인증서는 사설 인증 기관(CA)에서 발급되며, 이를 각 시스템에 배포하여 서명된 파일을 검증합니다. 주요 단계: 사설 인증서 발급 및 배포: 사설 인증 기관(CA)을 구축하여 인증서를 발급하고, 이를 시스템에 배포해 신뢰할 수 있는 루트 인증서로 설정합니다. 코드 서명 및 검증: 발급된 인증서를 사용해 파일이나 DLL에 디지털 서명을 합니다...
커플링 심화를 이용한 DLL 포인터 마스킹 후 역 마스킹하여 Caller 검증 방법요구 사항CLASS A를 만들고, 함수 BOO, FOO 구현CLASS AImpl을 new로 할당할당된 AImpl에 특정 수로 마스크 처리DLL에서 Caller에게 마스크된 포인터를 리턴Caller는 BOO, FOO 호출 시 해당 포인터를 전달DLL에서 마스킹을 풀어 리턴된 포인터가 올바른지 체크정상적이면 AImpl 내부 함수 호출코드 예제1. DLL 내 CLASS A 정의 및 포인터 마스킹 처리DLL에서 CLASS A와 AImpl을 정의하고, 포인터를 특정 값으로 마스킹 처리한 후 Caller에게 반환합니다.// MyDLL.cpp#include #include class A {public: virtual void BO..
NONAME을 이용한 멀티스레드 세이프한 방법 1. 멀티스레드 환경에서 발생할 수 있는 문제 동시 접근 문제: 여러 스레드가 동일한 자원에 동시에 접근할 경우, 데이터 불일치 또는 충돌이 발생할 수 있습니다. 메모리 관리 문제: 객체의 생성과 해제를 DLL 내부에서 처리하지 않으면 메모리 누수나 충돌이 발생할 수 있습니다. 전역 변수 사용: 전역 변수에 여러 스레드가 접근할 경우 동기화가 필요합니다. 2. 스레드 안전성을 확보하는 방법 객체의 독립성 유지: 각 스레드가 독립적으로 객체를 사용하고, 공유 자원에 접근할 때는 동기화를 적용합니다. 동기화 메커니즘 사용: mutex, critical section 등..
- Total
- Today
- Yesterday
- OpenSource
- Thread
- 디자인패턴
- PowerShell
- 서귀포
- 양파다이브
- 스쿠버다이빙
- RSA
- 제주도
- 블루버블다이빙팀
- 패턴
- 성산블루버블
- Windows
- 서귀포블루버블
- C
- 블루버블
- 블루버블다이브팀
- 현포다이브
- 암호화
- C++
- C#
- 울릉도
- Build
- ip
- 윈도우
- Linux
- ReFS
- 리눅스
- DLL
- 다이빙
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |