본문 바로가기
3-1 학기/Programming Languages

[프로그래밍언어] Ch6 Concepts of Programming Languages

by bona.com 2024. 4. 16.

C언어의 자료형

참고로 모든 배열은 구조체로 변환이 가능하다.

단, 구조체는 배열로 변환이 불가능하다.

 

Java의 자료형

 

Java는 크게 기본 타입과 레퍼런스 타입으로 나뉘는 것을 볼 수 있다.

 

Dangling Pointer Problem

Dangling pointer 문제란 이미 해제된 메모리를 가리키는 포인터를 의미한다.

 

이를 해결하기 위한 방법으로는 포인터를 NULL로 설정하는 것이 있다.

이렇게 하면 포인터가 더 이상 유효하지 않은 메모리 주소를 가리키지 않게 될 것이다.

 

Array Type

  • Static Array(정적 배열): 정적 배열은 컴파일 시간에 그 크기가 결정되며, 프로그램의 실행 동안 크기가 변경되지 않는다. Subscript binding(인덱스 결정)과 Storage binding(메모리 할당) 모두 컴파일 시간에 이루어지며, 이러한 배열은 프로그램의 Lifetime 동안 고정된 메모리 공간을 차지한다. 
    • 장점: 효율성 (동적 할당을 하지 않아도 됨)
  • Fixed stack-dynamic: 인덱스 범위는 정적으로 바인딩되지만 할당은 선언 시간에 수행됩니다
    • 장점: 공간 효율
  • Fixed heap-dynamic:  fixed stack-dynamic과 유사하게 메모리 할당은 동적이지만 할당 후 고정됩니다(즉, 요청 시 바인딩이 수행되고 스토리지가 스택이 아닌 힙에서 할당된다)
  • Heap-dynamic: subsciprt 범위 및 저장소 할당의 바인딩은 동적이며 임의의 횟수를 변경할 수 있다.
    • 장점: 유연성(배열은 프로그램 실행 중에 성장하거나 축소할 수 있다)