#pragma pack 지시자는 구조체, 클래스, 또는 유니언의 멤버들이 메모리에 어떻게 배치되는지를 제어하는 데 사용됩니다. 기본적으로 컴파일러는 멤버들을 특정 바이트 경계에 맞추기 위해 패딩을 추가하여 최적의 성능을 보장하지만, 특정 상황에서는 이 패딩을 제거하고 메모리 사용을 최소화해야 할 필요가 있습니다. 이를 위해 #pragma pack을 사용하여 멤버들의 정렬 단위를 변경할 수 있습니다.#pragma pack 사용법#pragma pack(push, 1)과 #pragma pack(pop)은 구조체, 클래스, 유니언의 멤버 정렬을 제어하는 데 사용됩니다. 이 설정은 데이터 패딩을 줄여 메모리 사용을 최적화하거나, 파일 포맷 및 네트워크 프로토콜과 같은 특정 데이터 포맷과의 호환성을 위해 자주 사용..
Abstract Factory 패턴은 생성 패턴(Creational Pattern)의 하나로, 서로 관련있거나 의존하는 객체들의 그룹을 생성하기 위한 인터페이스를 제공하면서, 구체적인 클래스를 지정하지 않는 디자인 패턴입니다. 이 패턴의 목적은 클라이언트 코드가 생성할 객체의 구체적인 타입과 분리되도록 하는 것입니다. 이를 통해 클라이언트 코드의 유연성과 재사용성을 높일 수 있습니다. Abstract Factory 패턴의 구성 요소 Abstract Factory: 추상 팩토리는 구체 팩토리가 구현해야 하는 인터페이스를 정의합니다. 이 인터페이스는 다양한 타입의 추상 제품을 생성하는 메소드를 선언합니다. Concrete Factory: 구체 팩토리는 추상 팩토리 인터페이스를 구현하는 클래스로, 특정 제품 ..
옵저버 패턴(Observer Pattern) 옵저버 패턴(Observer Pattern)은 행동 디자인 패턴 중 하나로, 객체의 상태 변화를 관찰하고 이러한 변화에 대해 하나 이상의 관찀자에게 자동으로 알림을 보내는 패턴입니다. 이 패턴은 주로 분산 이벤트 처리 시스템, GUI 툴, 리액티브 프로그래밍에서 널리 사용됩니다. C/C++ 언어를 사용하는 리눅스 환경에서도 옵저버 패턴을 구현할 수 있으며, 이는 이벤트 기반의 프로그래밍 모델을 구축할 때 유용합니다. 옵저버 패턴의 주요 구성 요소는 다음과 같습니다: Subject (주제): 관찰 대상 객체로, 여러 관찰자(Observer) 객체를 자신의 리스트에 유지하고, 자신의 상태 변화를 이들 관찰자에게 알립니다. Observer (관찰자): 주제의 상태 ..
팩토리 패턴은 객체 생성을 위한 인터페이스를 정의하고, 하위 클래스가 어떤 클래스의 인스턴스를 생성할지 결정하게 하는 디자인 패턴입니다. 이를 통해 객체 생성을 서브클래스에 위임함으로써, 클라이언트 코드와 인스턴스를 만들어야 하는 구체적인 클래스 간의 결합도를 낮출 수 있습니다. 팩토리 패턴은 크게 두 가지로 나뉩니다: 팩토리 메서드 패턴과 추상 팩토리 패턴입니다. 여기서는 더 간단한 팩토리 메서드 패턴의 예제를 소개하겠습니다. 팩토리 메서드 패턴 예제 이 예제에서는 단순한 차량 공장을 모델링합니다. Vehicle 인터페이스와 이를 구현하는 두 개의 구체 클래스 Car와 Bike를 정의합니다. 그리고 VehicleFactory 클래스에서는 Vehicle 객체를 생성하는 팩토리 메서드 createVehic..
싱글턴(Singleton) 패턴은 객체의 인스턴스가 애플리케이션 내에서 단 하나만 생성되도록 보장하는 디자인 패턴입니다. 이 패턴은 전역 변수를 사용하지 않고 객체에 대한 전역 접근을 제공하며, 동시에 여러 인스턴스의 생성을 방지하여 리소스 사용을 최적화할 수 있습니다. 생성자를 비공개로 만들어 클래스 외부에서 인스턴스를 직접 생성할 수 없게 합니다. 클래스 내에 정적(private static) 멤버 변수로 자기 자신의 유일한 인스턴스를 저장합니다. 공개적인 정적 메서드(getInstance) 를 제공하여 유일한 인스턴스에 접근할 수 있게 합니다. 이 메서드는 내부적으로 인스턴스가 존재하지 않을 경우에만 생성하고, 이미 존재하는 경우에는 기존 인스턴스를 반환합니다. #include class Singl..
C++20 이상: std::format 사용 예시C++20에서는 std::format이라는 새로운 함수를 도입하여 문자열 포맷팅을 더욱 쉽게 할 수 있게 되었습니다. 이 함수는 Python의 str.format과 유사한 방식으로 작동합니다. 다만, std::format은 컴파일 시간에 포맷 문자열을 검사하여 타입 안전성을 보장합니다.#include #include #include templatestd::string stringformat(const std::string& format, Args ... args) { size_t size = snprintf(nullptr, 0, format.c_str(), args ...) + 1; if (size buf(new char[size]); ..
- Total
- Today
- Yesterday
- Effective c++
- C#.NET
- 블루버블
- PowerShell
- C
- 외돌개
- 스쿠버 다이빙
- Linux
- 스쿠버다이빙
- 서귀포
- CMake
- Build
- OpenSource
- C# 고급 기술
- 패턴
- C++
- 울릉도
- Windows
- script
- 제주도
- 서귀포블루버블
- 블루버블다이빙팀
- 암호화
- 블루버블다이브팀
- C#
- 성산블루버블
- effective
- 네트워크 정보
- 현포다이브
- 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 |