C - 기억 장치

역할 영역 과 링크 는 식별 자의 가시 성 을 묘사 했다. 저장 기간 은 이러한 식별 자 를 통 해 방문 하 는 대상 의 생존 기 를 묘사 했다. C 대상 은 4 개의 저장 기간 이 있다. , , , .
대상 이 이 있 으 면 그 는 프로그램의 실행 기간 에 계속 존재 합 니 다. 파일 역할 도 메 인 변 수 는 정적 저장 기 를 가지 고 있 습 니 다. 주의 하 세 요. 파일 역할 도 메 인 변수 에 대해 키 워드 는 저장 기 가 아 닌 링크 속성 을 나 타 냅 니 다. static 로 설명 한 파일 역할 도 메 인 변 수 는 내부 링크 가 있 습 니 다. 그러나 내부 링크 든 외부 링크 든.모든 파일 역할 영역 변 수 는 정적 저장 기 를 가지 고 있 습 니 다.
스 레 드 저장 소 는 병렬 프로 그래 밍 에 사 용 됩 니 다. 프로그램 실행 은 여러 스 레 드 로 나 눌 수 있 습 니 다. 스 레 드 저장 소 가 있 는 대상 은 성명 되 었 을 때 부터 스 레 드 가 끝 날 때 까지 존재 합 니 다. 키워드 _Thread_local 로 대상 을 설명 할 때 모든 스 레 드 는 이 변수의 개인 백업 을 받 습 니 다.
블록 역할 필드 의 대상 은 보통 자동 저장 기 를 가지 고 있 습 니 다. 프로그램 이 이 변 수 를 정의 하 는 블록 에 들 어 갈 때 이 변수 들 에 게 메모 리 를 할당 합 니 다.이 빠 른 시간 에 변수 로 분 배 된 메모 리 를 방출 합 니 다. 이 방법 은 자동 변수 가 사용 하 는 메모 리 를 중복 사용 가능 한 작업 영역 이나 임시 저장 영역 으로 보 는 것 과 같 습 니 다. 예 를 들 어 함수 호출 이 끝 난 후에 그 변수 가 사용 하 는 메모 리 는 다음 호출 함수 의 변 수 를 저장 하 는 데 사용 할 수 있 습 니 다. 길 어 지 는 배열 이 조금 다 릅 니 다. 그들의 저장 기간 은 성명 에서 블록의 끝 까지 입 니 다.블록의 시작 에서 블록의 끝 까지 가 아 닙 니 다. 아래 코드 에서 변수 number 와 index 는 bore () 함 수 를 호출 할 때마다 생 성 되 고 떠 날 때 삭 제 됩 니 다.
void bore(int number) {
 int index;
 for ( index = 0 ; index < number ; index ++ ) {
  puts("They don't make them the way they used to.
"; } }

그러나 블록 역할 도 메 인 변 수 는 정적 저장 기 를 가 질 수 있 습 니 다. 이러한 변 수 를 만 들 기 위해 서 는 변 수 를 블록 에 설명 하고 성명 전에 키워드 static 를 추가 해 야 합 니 다.
void more(int number) {
 int index;
 static int ct = 0;
}

여기 서 변수 ct 는 정적 메모리 에 저 장 됩 니 다. 프로그램 이 불 러 올 때 부터 프로그램 이 끝 날 때 까지 존재 합 니 다. 그러나 그의 역할 영역 은 more () 함수 에 정의 되 어 있 습 니 다. 이 함 수 를 실행 할 때 만 프로그램 은 ct 를 사용 하여 지정 한 대상 에 접근 할 수 있 습 니 다.(단, 이 함 수 는 다른 함수 에 이 저장 소의 주 소 를 제공 하여 이 대상 에 간접 적 으로 접근 할 수 있 습 니 다. 예 를 들 어 포인터 형 인삼 이나 반환 값 등).
C. 역할 도 메 인 을 사용 하고 링크 와 저장 기 는 변수 로 여러 가지 저장 방안 을 정의 합 니 다. 5 개의 저장 유형:
기억 영역
기억 기간
역할 영역
링크
성명 방식
저절로
저절로
덩어리.
없다
덩어리 안
레지스터
저절로
덩어리.
없다
블록 내 키워드 register 사용
정적 외부 링크
정적
문건
외부
모든 함수 외
정적 내부 링크
정적
문건
내부
모든 함수 외 키워드 static 사용
정적 연결 없 음
정적
덩어리.
없다
블록 내 키워드 static 사용

좋은 웹페이지 즐겨찾기