반응형

CPP 4

[c++] reinterpret_cast 란? (사용 이유와 주의할 점)

reinterpret_cast는 C++에서 제공하는 네 가지 캐스팅 연산자 중 하나로,메모리의 비트 패턴을 그대로 둔 채 타입만 강제로 바꿔서 해석할 때 사용합니다.📌 주요 특징서로 전혀 관련 없는 타입끼리도 변환 가능예: 포인터 ↔ 포인터, 포인터 ↔ 정수 등실제 데이터는 변하지 않고 해석 방식만 바뀜타입 안전성이 거의 없음잘못 사용하면 예기치 않은 동작이나 버그 발생 가능예시int a = 1234;char* p = reinterpret_cast(&a); // int* → char*void* v = ...;MyStruct* s = reinterpret_cast(v); // void* → 구조체 포인터언제 사용하나?하드웨어 접근, 네트워크 패킷 해석, 파일 포맷 처리 등메모리 구조를 직접 다뤄야 할 때..

[c++] 비트 연산자(bitwise operator)란? 언제, 왜, 어떻게 사용하는가?

✅ 비트 연산자란 무엇인가?비트 연산자는 숫자를 2진수(0과 1)로 생각해서, 비트 단위로 직접 조작할 수 있게 해주는 연산자입니다.컴퓨터는 모든 데이터를 비트 단위로 저장하므로, 이것을 잘 활용하면 더 빠르고 더 효율적인 코드가 가능합니다.✅ 비트 연산자의 종류 및 사용법&AND둘 다 1일 때만 10101 & 0011 = 0001|OR둘 중 하나만 1이면 10101 | 0011 = 0111^XOR다를 때 10101 ^ 0011 = 0110~NOT0을 1로, 1을 0으로 반전~0101 = 1010 (부호 주의)왼쪽 시프트비트를 왼쪽으로 밀기 (곱셈)5 >>오른쪽 시프트비트를 오른쪽으로 밀기 (나눗셈)10 >> 1 = 5💡 쉬운 예제int a = 5; // 00000101int b = a > ..

[C++]싱글톤(Singleton) 패턴이란? 언제 사용해야하는가?

오늘은 싱글톤 패턴에 대해 정리해보려고 합니다. 이 밈의 의미는 싱글톤이 맞는 경우도 분명 있지만, 많은 개발자들이 그냥 전역 변수처럼 쓰기 위해 싱글톤을 남용하고,그래서 평균적인 개발자는 싱글톤이 나쁘다고 말하고, 최상위 개발자는 '적절히 쓰면 괜찮다'고 말하는 밈이다. 그럼 싱글톤은 무엇인지 알아보도록 합시다! 🧩 싱글톤이란? 싱글톤(Singleton) 패턴은 프로그램 전체에서 단 하나의 인스턴스만 존재하도록 보장하는 디자인 패턴입니다.쉽게 말해서, 어떤 클래스는 하나만 만들고, 그걸 공유해서 쓰자!는 개념입니다.📌 예시:프로그램의 환경 설정을 저장하고 관리하는 객체는 하나만 있으면 충분합니다.로그(Log)를 기록하는 시스템도 하나면 충분해요. 로그를 기록하는 시스템은 여러 개가 필요하지 않고,..

[C++] 구조체 정렬(Struct Alignment)이란?

며칠동안 해결을 못하고 있던 문제가.. 구조체 정렬하나로 해결되었다.그게 문제였어... 다음에 비슷한 상황이 생기면 바로 캐치하기 위해 다시 개념을 정리해봅니다. sizeof(struct)를 찍어보고, 내가 예상한 크기보다 더 크게 나오는 경우 의심해보기! 🧱 구조체 정렬이란?구조체 정렬이란 간단히 말해, 구조체 멤버들을 메모리 상에 효율적으로 배치하기 위해 컴파일러가 삽입하는 패딩(padding) 작업을 말합니다.정렬(Alignment)의 핵심 이유:성능: CPU는 특정 바이트 경계(예: 4바이트, 8바이트)에 맞춰 데이터를 읽는 것이 더 빠릅니다.하드웨어 제약: 어떤 시스템에서는 정렬되지 않은 메모리 접근이 오류를 발생시킬 수 있습니다.👀 예제를 통해 이해하기#include struct A { ..

반응형