3-1 학기/Programming Languages

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

bona.com 2024. 4. 16. 14:43

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 범위 및 저장소 할당의 바인딩은 동적이며 임의의 횟수를 변경할 수 있다.
    • 장점: 유연성(배열은 프로그램 실행 중에 성장하거나 축소할 수 있다)