오븐 노트

[C++] 타입 변환 #3 본문

Develop/C++

[C++] 타입 변환 #3

오 븐 2023. 2. 15. 19:56
#include <iostream>
using namespace std;

class Item
{
public:
    Item()
    {
        cout << "Item()" << endl;
    }

    Item(const Item& item)
    {
        cout << "Item(const Item&)" << endl;
    }

    ~Item()
    {
        cout << "~Item()" << endl;
    }

public:
    int _itemType = 0;
    int _itemDbld = 0;

    char _dummy[4096] = {}; // 용량이 커진 클래스를 표현하기 위한 더미 데이터
};

void TestItem(Item item)
{

}

void TestItemPtr(Item* item)
{

}

int main()
{
    // 복습
    {
        // Stack [ type(4 byte) dbid(4 byte) dummy(4096 byte) ]
        Item item;

        // Stack [ 주소(4~8 byte) ] -> Heap [ type(4 byte) dbid(4 byte) dummy(4096 byte) ] 
        Item* item2 = new Item();

        TestItem(item);
        TestItem(*item2);

        TestItemPtr(&item);
        TestItemPtr(item2);

        // 메모리 누수 (Memory Leak) -> 점점 가용 메모리가 줄어들어서 Crash 발생
        delete item2;

        // 배열
        {
            cout << "------------------------------------" << endl;
            
            // 스택 메모리에 아이템 자체가 100개 올라가 있는 배열
            Item item3[100] = {};
            
            cout << "------------------------------------" << endl;

            // 배열 자체에는 주소값만 100개 들어가 있고, 실제 아이템 자체는 하나도 없을 수 있음.
            Item* item4[100] = {};

            for (int i = 0; i < 100; i++)
                item4[i] = new Item();

            cout << "------------------------------------" << endl;

            for (int i = 0; i < 100; i++)
                delete item4[i];

            cout << "------------------------------------" << endl;
        }
    }

    return 0;
}

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
 
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.

 

모든 글은 제가 공부하기 위해 작성합니다.

'Develop > C++' 카테고리의 다른 글

[C++] 얕은 복사 VS 깊은 복사 #1~2  (0) 2023.02.28
[C++] 타입 변환 #4~5  (0) 2023.02.15
[C++] 타입 변환 #1~2  (0) 2023.02.13
[C++] 동적할당 #3  (0) 2023.02.08
[C++] 동적할당 #2  (0) 2023.02.01