변수, 상수, 정적 변수가 저장된 위치

1426 단어 뒤죽박죽이다
일반적인 스토리지 영역은 다음과 같습니다.
1. 창고
컴파일러가 필요할 때 분배하고, 필요하지 않을 때 자동으로 알 수 있는 변수의 저장소입니다.안의 변수는 통상적으로 국부 변수, 함수 매개 변수 등이다.
2、쌓다
new에서 분배된 메모리 블록은, 그들의 방출 컴파일러가 관여하지 않고, 우리 프로그램에서 제어합니다. 일반적으로 new는 delete에 대응해야 합니다.만약 프로그래머가 풀지 않으면 프로그램은 계속 메모리를 차지하여 메모리가 누출되고 프로그램이 끝난 후에 운영체제는 자동으로 회수된다.
3. 자유 저장소
malloc 등에서 분배된 메모리 블록은 더미와 매우 비슷하지만,free로 분배된 메모리를 방출합니다.
4. 글로벌/정적 스토리지 영역
전역 변수와 정적 변수는 같은 메모리에 분배되고 이전의 C 언어에서는 전역 변수가 초기화되지 않은 것과 초기화되지 않은 것으로 나뉘었다. C++에는 이런 구분이 없고 그들은 같은 메모리 구역을 공동으로 차지했다.
5. 고정 기억 영역
이것은 비교적 특수한 저장 구역으로 그들 안에 저장된 것은 상수이기 때문에 수정할 수 없다. (물론 정당하지 않은 수단을 통해서도 수정할 수 있다.)
예1:C 언어 프로그램
int x;
void main()
{
}

변수 x는 메모리의 어느 구역에 저장됩니까?
답: 세그먼트 메모리 관리를 사용하는 구조에서 BSS 세그먼트(bss segment)는 일반적으로 프로그램에서 초기화되지 않은 전역 변수를 저장하는 데 사용되는 메모리 구역을 가리킨다.
BSS는 영어 Block Started by Symbol의 약칭입니다.BSS 세그먼트는 정적 스토리지에 속합니다.
예2:static 전역 변수와 일반 전역 변수는 어떤 차이가 있습니까?
A:static 글로벌 변수는 일반 글로벌 변수 저장소와 동일하며 다른 점은 다음과 같습니다.
static 전역 변수는 이 static 전역 변수를 설명하는 파일에서만 유효합니다.
일반 전역 변수는 전체 원본 프로그램에 유효합니다. 이 원본 프로그램이 한 파일보다 많은 프로그램을 포함할 때 다른 파일에도 유효합니다.
예3:static 국부 변수와 일반 국부 변수의 차이는?
답:static 국부 변수의 저장 구역은 정적 저장 구역이고 일반 국부 변수의 저장 구역은 창고이다.
static 국부 변수의 생존 주기는 전체 원본 프로그램이지만 그 함수를 설명하는 함수에서만 호출할 수 있고 그 값은 지난번의 결과와 관련이 있다.일반 국부 변수의 생존 주기는 그 함수를 성명하는 주기로 특정한 범위를 초과하면 그 값이 다시 초기화된다.
static 국부 변수가 초기화되지 않으면 기본값은 0이고 일반 국부 변수는 확실하지 않습니다.

좋은 웹페이지 즐겨찾기