C++(15)
-
union
메모리 사용을 최적화할 때.여러 방식으로 데이터를 처리가 필요할 때.상호 변환 가능한 값들이 있을 때. 예를 들어, 동일한 숫자나 값들을 다른 형식으로 나타내야 할 때 union을 사용.union Color { struct { uint8_t red; uint8_t green; uint8_t blue; }; uint32_t hexColor; // 32비트로 색상 표현}; RGB 값을 개별적으로 접근하려면 red, green, blue를 사용.전체 색상 값을 한 번에 접근하려면 hexColor를 사용. 이렇게 사용하게 되면 hexColor를 사용하고 red, green, blue는 다시 값을 설정하고 사용해야한다. 반대 경우도 동일.하지만 이렇게 새..
2025.03.26 -
SSO
SSO(Small String Optimization)std::string이 짧은 문자열을 저장할 때 힙 할당을 피하고 내부 버퍼(Stack 또는 inline buffer)를 사용하여 저장하는 최적화 기법 보통 15자 이하의 문자열 + NULL(컴파일러 및 구현에 따라 다름)은 힙을 사용하지 않고 스택(Stack)에 저장동적 할당을 피해서 속도를 높이고, 메모리 사용을 줄임. 장점성능 향상 : 동적 할당을 피해서 빠름메모리 절약 : 짧은 문자열은 추가적인 힙 할당 없이 std::string 내부에서 해결캐시 친화적 : 스택을 사용하므로 CPU 캐시에 적중할 가능성이 높아 속도가 빠름.단점SSO 버퍼 크기 제한 : 특정 크기(15자) 초과 시 힙 사용.C++ 표준에서 강제되지 않음: 모든 컴파일러에서 적용..
2025.03.26 -
소멸자(destructor)
객체가 파괴될 때 자동으로 호출되는 특별한 멤버 함수객체가 스코프를 벗어나거나 delete가 호출되어 메모리가 해체될 때 자동으로 실행소멸자의 주요 역할은 객체가 소멸될 때 리소스를 반환하거나 메모리를 해제#include using namespace std;class MyClass {public: // 생성자 MyClass() { cout 동적할당#include using namespace std;class MyClass {private: int* data;public: // 생성자 MyClass() { data = new int[100]; // 동적 메모리 할당 cout
2025.03.26 -
힙 / 스택
1. 힙 메모리 사용프로그램 실행 중에 동적으로 메모리를 할당.new 연산자를 사용하여 할당, delete 연산자를 사용하여 해제.크기 제한이 거의 없지만, 메모리를 수동으로 관리해야 하므로 메모리 누수에 주의.#include void exampleHeapUsage() { int* heapVar = new int; *heapVar = 20; std::cout 2. 스택 메모리 사용함수 호출 시 자동으로 할당, 함수가 끝날 때 자동으로 해제.비교적 빠르게 할당되고 해제, 메모리 크기 제한이 상대적으로 적다.크기가 큰 데이터나 동적 할당이 필요한 경우에는 적합하지 않다.#include void exampleFunction() { int stackVar = 10; std::cout
2025.03.25 -
cin
cin 오류 처리, 버퍼 관리, 다양한 종류의 입력을 효율적으로 다룰 수 있도록 도와준다. 입력 오류 처리: cin.clear(), cin.fail(), cin.ignore()문자 및 문자열 입력: cin.get(), cin.getline(), cin >> variable버퍼 관리: cin.peek(), cin.putback(), cin.read()기타 유용한 함수: cin.sync()1. cin.clear( )역할: cin의 상태를 정상으로 복구하는 함수. cin에서 오류가 발생하면 failbit나 eofbit가 설정되는데, clear( )를 사용하면 이 상태를 초기화하여 다시 입력을 받을 수 있다.cin.clear();2. cin.ignore( )역할: cin.ignore( )는 입력 버퍼에서 문자를..
2025.03.21 -
using
1. 특정 클래스나 함수만 using 선언하기특정 클래스나 함수만 using 선언 * 코드가 더 명확하고 충돌을 방지#include using std::cout; // std::cout만 사용using std::cin; // std::cin만 사용using std::endl; // std::endl만 사용int main() { int x; cout > x; // std::cin cout 2. 사용자 정의 네임스페이스using을 사용하여 자신이 정의한 네임스페이스에서도 간편하게 객체나 함수를 사용#include namespace myNamespace { int x = 10; void print() { std::cout 3. 네임스페이스 별칭 (Names..
2025.03.21