본문 바로가기

분류 전체보기

(93)
[DataStructure] Allocator.h 이번에는 DefaultAllocator를 구현했다. 말 그대로 메모리를 할당해주는 녀석인데, new를 이용해 메모리를 할당해줄수도 있지만, 특정 상황에서는 스택에 미리 잡아놓고 메모리를 관리하는 경우도 있었다. 자료구조가 상황에 따라 선택할 수 있도록 DefaultAllocator를 먼저 구현했다. DefaultAllocator는 new를 사용해서 메모리를 할당하도록 했다. 언젠가 Stack에 메모리를 잡아서 따로 관리해주는 Allocator를 구현해볼 예정이다. https://github.com/SanGyuk-Raccoon/ToyProject/blob/master/DataStructure/Allocator.h GitHub - SanGyuk-Raccoon/ToyProject Contribute to Sa..
[DataStructure] LogManager.h 기존 작업하던 자료구조를 엎고, 다시 시작했다. 첫 번째 이유는, template으로 구현하여 다양한 type에 대해서도 동작하도록 하게 하고 싶었고, 두 번째 이유는, 조금 더 완성도를 높히고 싶어서다. 첫 번째 작업으로는 LogManager를 간단하게 구현했다. 내용은 사실 assert밖에 없긴하다... https://github.com/SanGyuk-Raccoon/ToyProject/blob/master/DataStructure/LogManager.h GitHub - SanGyuk-Raccoon/ToyProject Contribute to SanGyuk-Raccoon/ToyProject development by creating an account on GitHub. github.com
[DesignPattern] 05. Decorator https://github.com/SanGyuk-Raccoon/ToyProject/blob/master/DesignPattern/05.Decorator.cpp GitHub - SanGyuk-Raccoon/ToyProject Contribute to SanGyuk-Raccoon/ToyProject development by creating an account on GitHub. github.com * 직접 구현하였기 때문에 오류가 있을 수 있습니다.
[DesignPattern] 04. Observer https://github.com/SanGyuk-Raccoon/ToyProject/blob/master/DesignPattern/04.Observer.cpp GitHub - SanGyuk-Raccoon/ToyProject Contribute to SanGyuk-Raccoon/ToyProject development by creating an account on GitHub. github.com * 직접 구현하였기 때문에 잘못된 부분이 있을 수 있습니다.
[DesignPattern] 03. Composite https://github.com/SanGyuk-Raccoon/ToyProject/blob/master/DesignPattern/03.Composite.cpp GitHub - SanGyuk-Raccoon/ToyProject Contribute to SanGyuk-Raccoon/ToyProject development by creating an account on GitHub. github.com
[DesignPattern] 02. Strategy Strategy 패턴은 Template Method 패턴과 비슷한 느낌이 있었다. 두 개를 비교해보는 것도 좋을 듯. https://github.com/SanGyuk-Raccoon/ToyProject/blob/master/DesignPattern/02.Strategy.cpp GitHub - SanGyuk-Raccoon/ToyProject Contribute to SanGyuk-Raccoon/ToyProject development by creating an account on GitHub. github.com
[DesignPattern] 01. Template Method 첫 번째로 정리해볼 디자인 패턴은, Template Method 패턴이다. https://github.com/SanGyuk-Raccoon/ToyProject/blob/master/DesignPattern/01.TemplateMethod.cpp GitHub - SanGyuk-Raccoon/ToyProject Contribute to SanGyuk-Raccoon/ToyProject development by creating an account on GitHub. github.com
[DesignPattern] 00. Basic https://github.com/SanGyuk-Raccoon/ToyProject/blob/master/DesignPattern/00.Basic.cpp GitHub - SanGyuk-Raccoon/ToyProject Contribute to SanGyuk-Raccoon/ToyProject development by creating an account on GitHub. github.com 앞으로 디자인 패턴에 대해 학습한 내용을 업로드할 예정이다. 디자인 패턴 학습을 하기 전, 최소한으로 알면 좋을만한 class 특징을 정리해보았다. 잘못된 내용이 있을 수 있기 때문에 추후 수정을 고려하여 github에 코드와 주석의 형태로 작성할 것이다.
[C++] Type Conversion, 자동 형변환 C++에서 계산을 하다보면 이상하게 안 맞을 때가 있는데... 주로 소수와 관련된 연산에서 겪을 수 있다. 형 변환 규칙에 관해 들어볼 기회가 있었는데, "형변환에 대해 너무 고려하지 않고, 개발을 하고 있었구나..." 하는 생각이 들어 정리를 한번 하고자 한다. 우리가 사용하는 기본적인 변수 타입은 다음과 같다. (unsigned) char : 1 Byte (unsigned) short : 2 Byte (unsigned) long int : 4 Byte (unsigned) long long int : 8 Byte float : 4 Byte double : 8 Byte. 먼저, 잘 알려진 정보에 대해 먼저 정리해보자. Byte가 클수록 표현할 수 있는 범위도 넓다. signed/unsigned는 맨 앞 ..
[C++] Memory Alignment of Struct C++에서 Struct를 만들다보면, Memory Alignment를 신경써줘야 메모리 낭비를 줄일 수 있다. 문서를 통해 정확히 확인할수는 없었지만, 이것저것 시도해보면서 찾은 나름의 규칙을 정리해보려 한다. 아래는 전체 코드이다. 코드를 따라가며 결과를 확인해볼 예정이다. 주석은 본인이 알아보려고 적은 것이어서 주석이 이해가 안 된다면 포스팅을 참고하기 바란다. #include #define printMemorySize(TYPE) \ printf(#TYPE " Size is %d\n", sizeof(TYPE)); /* Data Alignment of Struct */ // #1 : 변수는 선언된 순서대로 메모리에 저장된다. #if 0 struct ST1 { int i1 = 1; int i2 = 2; ..