[프로그래밍 언어] C/C++ (1) - 구조와 동작

._.·2021년 4월 12일
0

프로그래밍 언어

목록 보기
2/4

메모리 구조와 프로그램의 동작에 대한 이해를 바탕으로 언어를 공부해 보자!

https://jinshine.github.io/2018/05/17/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EA%B8%B0%EC%B4%88/%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B5%AC%EC%A1%B0/
정리가 아주 잘되어있다. 이 블로그를 참고하였다.

런타임

: 컴파일 과정을 마친 응용 프로그램이 실행되는 과정.

  • 런타임 에러
    : 런타임 과정에서 발생하는 에러. 보통 설계에러(배열 할당 크기를 넘어감, 전역 배열의 메모리 초과, 0으로 나눌때 등)

컴파일타임

: C,Java와 같은 개발언어가 소스코드로 작성되었을때, 컴파일 과정에서 기계어 코드로 변환된다. 즉, 실행가능한 프로그램이 되는 과정이다.

  • 컴파일타임 에러
    : 소스코드가 컴파일 되는 과정에서 발생하는 에러. 보콩 문법오류(데이터 타입, 함수 선언 등)

메모리 구조


(출처: 상단 불로그)
스택과 힙은 메모리 영역을 공유한다. 힙은 위에서부터, 스택은 아래에서부터.

  • 코드(Code) 영역: 실행 파일을 구성하는 명령어들이 이 영역에 들어간다.

  • 데이터(Data) 영역: 전역변수, static변수가 이곳에 할당된다.

  • 스택(Stack) 영역: 지역변수, 매개변수가 이곳에 저장된다.

  • 힙(Heap) 영역: 동적으로 할당/해제되는 메모리. 자바에서는 가비지 컬렉터가 자동으로 해제한다.


C언어의 메모리 할당

  • malloc() : 메모리 할당시 쓰레기값이 들어가 있음, 메모리의 크기를 바이트 단위로 할당가능
  • calloc() : 메모리 할당시 0으로 초기화, 메모리의 크기를 바이트 단위로 할당가능
  • realloc() : 이미 할당되어 있는 메모리의 크기를 바꿀때 사용
  • free() : 동적할당한 메모리를 다시 반납할때 사용

C++의 메모리 할당

  • new() : 힙에 메모리 할당, 생성자 호출, 해당 타입으로 변환
  • delete() : 소멸자를 호출, 메모리 해제

C와 C++의 차이

  • C의 경우, 소멸과정을 거치지 않은 채로 삭제해서 발생하는 문제가 생길 수 있음

OOP (Object Oriented Programming) 4대 기본원칙

  • 추상화 (Abstraction) : 클래스의 개념을 생각하기(실체가 없는 틀의 느낌?)
  • 캡슐화 (Encapsulation) : private으로 정의된 속성을 외부에 노출시키지 않고, 자신의 클래스에만 사용하게 하는것.
  • 상속 (Inheritance) : 부모클래스의 속성을 자식클래스가 사용하는 것.
  • 다형성 (Polymorphism) : 다형성은 서로 다른 클래스의 객체가 같은 메시지를 받았을 때 각자의 방식으로 동작하는 능력이다.

0개의 댓글