본문 바로가기
반응형

전체 글365

메모리 구조에 대해서(stack, heap, buffer overflow) 프로그램을 만들고 실행을 하게되면 메모리 라는 곳에 코드들이 올라가 실행되게 됩니다. 사실 메모리는 물리적 메모리(Physical Memory)와 가상 메모리(Virtual Memory)로 나뉘게 됩니다.일반적으로 코드를 실행하면 가상메모리에 적재 됩니다. 물리적 메모리는 RAM이고 가상 메모리는 HDD의 용량에서 가져와 사용하게 됩니다.운영체제는 프로그램을 실행할 때 필요한 최소정보만 RAM에 저장을 합니다.그리고 이를 Working set이라고 합니다. 그 후 프로그램을 실행하면서 필요한 데이터 정보를 가상 메모리에서 가져와상황에 맞게 물리적 메모리에 맵핑하고 맵핑을 해제하고이런 작업을 반복하게 됩니다. 이것을 페이징(Paging)기법 이라고 합니다. 가상메모리의 주소 데이터들을 일정한 크기의 블록으.. 2019. 1. 19.
c++ new의 사용법, malloc과의 차이(free, delete) ※컴퓨터의 메모리 구조를 알고 보시면 더 쉽게 이해할 수 있습니다. 메모리 구조 보러가기(클릭) 프로그램을 만들다 보면 상황에 따라 추가적인 메모리 공간을 실시간으로 확보해야 할 경우가 많습니다. 예를 들자면 채팅 대화방에 2명이 접속해 있는데 3명이 더 추가 접속을 했다거나 컴퓨터에 자료를 추가적으로 입력해 저장해야 하거나 등.... 여러가지 경우가 있습니다. 이것은 컴퓨터의 소프트웨어 사용시 변화가 유동적으로 일어나기 때문에 어찌보면 당연한 일이기도 합니다. 서론이 긴 이유는 제가 공부하고 배우면서 이 동적 메모리의 사용 이유를 제대로 파악하지 못한 채 배웠고 그로 인해 무엇이 중요한지도 제대로 모르고……. 답답한 느낌도 들고……. 무엇을 공부하거나 배울 때 목적이나 이유를 알고 지식을 습득하는 것이.. 2019. 1. 19.
객체, 인스턴스, 클래스 용어 정리!! ※클래스, 객체, 인스턴스, 인스턴스화는 분명 정의된 용어입니다. 얼추 보면 다 고만고만하고 비슷비슷해 보이지만 뜻하는 바는 다르다는걸 아시길 바랍니다!! 설명하기에 앞서 예시를 하나 보겠습니다. (직접 만들었습니다.....^^;;) 위 그림을 설명하자면.....;;; 쫄라맨이 과자를 만들 계획을 세우고 재료들을 구성하고 배합하여 과자를 만드는 과정입니다.!? 여기서 과자를 만들 계획을 세우고 어떤 재료가 들어갈지 틀을 구상하는 것이 클래스가 됩니다. 클래스를 기반으로 어떤 과자를 만들지 결정하는 단계를 객체라고 합니다. 어떤 과자(객체)를 만들지 결정했으면 그에 맞는 배합물을 넣고 섞어 완성품을 만들어내는 일련의 과정들을 인스턴스라고 합니다. 그리고 객체에서 인스턴스로 넘어가는 것을 가르켜 인스턴스화 .. 2019. 1. 17.
C++ 클래스 정의, 구조체와 차이점(접근제어 지시자) ※ 클래스를 알기전에 왜 클래스를 사용하는지 이유가 궁금하시면 객체지향 사용하는 이유(클릭)를 가보시기 바랍니다. C++에서 클래스와 비교되는 것이 구조체 입니다. 이 둘의 코드를 비교해 보겠습니다. 구조체 #include using namespace std; struct MyStruct { int num1; char arr[10]; void print(void) { cout 2019. 1. 17.
C와 C++의 차이, 절차지향과 객체지향의 차이점!!(객체지향 사용 이유) ※ 이 글은 C언어를 공부하신 후 읽으시는 것이 좀 더 이해가 빨리 될 것임을 알려드립니다. 또한 굳이 배우지 않았더라도 최대한 이해하기 쉽게 설명해 놓겠습니다. 이 둘의 차이점을 설명하기엔 너무나도 장문이 될 것 같으니 최대한 요약해서 설명해보겠습니다.! 우선 객체지향 언어를 사용한다는 가정하에 속도를 생각하시면 안됩니다. 객체지향 언어를 사용하는 이유(제가 생각하는 이유)는 다음과 같습니다. 1. 효율적인 분산 개발2. 그에 따른 각 개인의 포커싱으로 인한 질 좋은 코딩3. 서로간의 협력과 조율4. 완성 됐을 때의 유지보수 애초에 객체지향 언어는 프로그램 동작속도를 향상시키기 위해 개발된 언어가 아니라위 같이 여러명이 개발할 때 효율적인 코딩을 위해 만들어진 언어라고 생각했으면 좋겠습니다. 학교 수업.. 2019. 1. 17.
C++의 참조자 C++은 C언어와는 다르게 참조자 라는 기능이 있습니다. 이 글을 읽기 전에 '포인터' 라는 개념을 알고 넘어가야 합니다. 포인터를 모르신다면 포인터에 대한 글부터 읽고 넘어가시길 바랍니다. 포인터 보러가기~ 백문이 불여일견!! 예시부터 봅시다. #include using namespace std; void main() { int num1 = 10; int &num2 = num1; //참조자 선언 cout 2018. 6. 24.
728x90
반응형

스킨편집 -> html 편집에서