프로그래밍 공부

컴퓨터 용어 정리 76

카테고리 설명
  • 호출 스택 포인터 는 C/C++에서 함수 호출이 발생할 때 스택 메모리 구조를 관리하는데 사용되는 포인터 이다. 스택 메모리는 후입선출(Last-In-First-Out) 방식으로 동작한다. 함수가 호출될 때 마다 호출 스택 프레임(Call Stack Frame)이 스택에 쌓이고, 반환될 때마다 해당 프레임이 스텍에서 제거된다. 이때 스택 포인터(Call Stack Pointer)는 현재 스텍프레임의 맨 위를 가리키는 포인터 이다. 이는 스텍메모리 에 대한 접근을 제어하고, 호출 스택 프레임의 크기를 결정하는데 사용된다. ( 스택 프레임에 가장 최근에 들어온 프레임의 바로 윗부분. 다음 프레임이 들어올 시작지점을 가리킨다.) C++에서 n부터 1까지의 정수를 출력하는 재귀함수를 통해서 스택포인터를 살펴보자..

  • 심볼 테이블 은 컴파일러가 소스코드를 분석하는 과정에서 생성된다. 이는 변수, 함수 등의 식별자와 해당 식별자가 가리키는 메모리 위치 등의 정보를 저장하는 데이터 구조이다. 다음 코드와 함께 예시를 살펴보자. 위 코드에서 변수 x는 식별자(identifier) 로서 main함수 내부에서 선언되었다. 이때, 컴파일러는 x라는 식별자와 해당 변수가 선언된 메모리 위치 등의 정보를 심볼 테이블에 저장하게 된다. 즉, 심볼 테이블은 소스코드 를 분석하는 과정에서 생성되며, 변수, 함수 등의 식별자와 해당 식별자가 가리키는 메모리 위치 등의 정보를 저장하게 된다. 이 정보를 바탕으로 컴파일러가 실행파일을 생성하게 된다. 만약, 위 코드가 실행되었을 경우 심볼 테이블은 다음과 같이 생성될것이다. 식별자 이름 선언 ..

  • 프로그래밍 언어는 선언시 형식, 변수, 초기화 의 순으로 이루어진다. 다음 예시를 살펴보자. 여기서 int a = 10; 이라는 변수가 선언되었을 때. L-value 는 a이고, R-value 는 10 을 의미한다. L-value R-value 변수 선언시 왼쪽의 변수명 또는, 대입연산자가 들어갔을 시의 왼쪽 변수를 이야기한다. 변수 선언시 오른쪽의 상수 또는 대입연산자가 들어갔을 시의 오른쪽 상수, 변수 를 이야기한다. 식이 끝나도 나중에 다시 접근이 가능하다. int a를 선언했을 때, 나중에 a를 선언함으로써 다시 호출이 된다. 식이 끝나면 나중에 다시 접근할 수 없다. int a = 10 이라고 했을 때. 10이라는 상수가 선언된 후 식이 끝나면 10에 접근할 방법이 사라진다. 변수 그자체이기 때..

  • 위 코드에서 ptr=NULL하지 않았고, 그럼으로인해 ptr에 남아있는 주소값이 임의의 메모리를 가리키게 되었음으로 유효하지 않는 메모리 주소를 가리키게 된다. 이를 Dangling Pointer 또는 Dangling Reference 라고 한다. 메모리를 해재 한 뒤. OS가 임의의 메모리공간으로 할당하여 사용하려고 할 때 주소값이 남아있음으로 코드 내에서 해당 주소로 접근이 가능해지기 때문에 심각한 보안 취약점으로 작용할 수 있다.