관리 메뉴

Value Creator의 IT(프로그래밍 / 전자제품)

#6 [C++] 예제 : RAM 구현해보기 본문

1. 프로그래밍/5) C++

#6 [C++] 예제 : RAM 구현해보기

valuecreatort 2019. 7. 26. 21:11
반응형

RAM.h

 

#ifndef RAM_H

#define RAM_H

#include<iostream>

using namespace std;

 

class Ram

{

    char mem[100 * 1024];// 100kb 메모리. 한 번지는 한바이트이므로 char 타입사용.

    int size;

public :

    Ram();

    ~Ram();

    char read(int adress);

    void write(int adress, char value);

};

#endif

 

 

헤더 파일은 위와 같이 주어진다.

 

기본생성자에서는 mem의 사이즈를 size로 변경해주고(동적할당)

 

소멸자에서는 소멸자가 작동하는지 유무 체크를 위한 문자를 넣으면 된다.

ex) "메모리 제거됨"

 

read에서는 말그대로 해당 주소를 읽어오는 것이며

 

write는 해당 주소의 mem에 값을 입력하는것이다.


Main문과 결과는 아래와 같다.

 

main.cpp

#include"Ram.h"

 

int main()

{

    Ram ram;

    ram.write(100, 20);

    ram.write(101, 30);

    char res = ram.read(100) + ram.read(101);

    ram.write(102, res);

    cout << "102 번지의 값 = " << (int)ram.read(102) << endl;

}

 


Ram.cpp

#include "Ram.h"

Ram::Ram()

{

    size = 100 * 1024;

    char *mem = new char[size];

}

 

Ram::~Ram()

{

    cout << "메모리 제거됨" << endl;

}

 

char Ram::read(int adress)

{

    return mem[adress];

}

 

void Ram::write(int adress, char value)

{

    mem[adress] = value;

}

 

기본생성자에서 동적할당의 예제는 "char *변수이름 = new char[배열의 크기]"이다.

write에서는 해당 mem의 주소에 value를 넣는다.

반응형
Comments