> 백엔드 개발 > C++ > C의 전역 변수는 메모리를 어디에 저장합니까(스택 또는 힙)?

C의 전역 변수는 메모리를 어디에 저장합니까(스택 또는 힙)?

DDD
풀어 주다: 2024-12-02 09:22:11
원래의
969명이 탐색했습니다.

Where Do Global Variables in C   Store Their Memory: Stack or Heap?

C의 전역 변수에 대한 메모리 할당: 스택 대 힙

C에서 데이터 구조가 전역적으로 선언될 때 다음과 같은 질문이 발생합니다. 스택 메모리나 힙 메모리를 소모합니다. 이를 이해하기 위해 일반적인 C 프로세스의 메모리 레이아웃을 살펴보겠습니다.

C 프로세스의 메모리 레이아웃

C 프로세스는 일반적으로 5개의 서로 다른 메모리 영역을 할당합니다.

  1. 코드(텍스트 세그먼트)
  2. 초기화된 데이터(data 세그먼트)
  3. 초기화되지 않은 데이터(bss 세그먼트)
  4. 스택

전역 변수 할당

전역 변수가 선언되면 해당 메모리는 데이터 세그먼트 또는 bss 세그먼트.

  1. 데이터 세그먼트: 초기화된 전역 변수를 포함합니다. 크기는 컴파일 타임에 고정됩니다.
  2. Bss 세그먼트: 초기화되지 않은 전역 변수를 포함합니다. 크기도 컴파일 타임에 고정되지만 내용은 기본적으로 0으로 초기화됩니다.

따라서 전역 변수는 의 일부인 데이터 세그먼트 또는 bss 세그먼트에 저장됩니다. 정적 메모리가 할당됨 program.

주어진 예에서 배열 arr은 struct AAA 유형의 전역 변수입니다. 초기화되었는지(기본값이 있음) 또는 초기화되지 않았는지(가비지 값 포함)에 따라 데이터 세그먼트 또는 bss 세그먼트에 할당됩니다.

결론

요약하자면 C의 전역 데이터 구조는 프로그램에 할당된 정적 메모리, 특히 데이터 세그먼트나 bss 세그먼트에서 메모리를 소비합니다. 스택 또는 힙 메모리 영역.

위 내용은 C의 전역 변수는 메모리를 어디에 저장합니까(스택 또는 힙)?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿