> 백엔드 개발 > C++ > 스택 대 힙: C Live에서 전역적으로 선언된 데이터 구조는 어디에 있습니까?

스택 대 힙: C Live에서 전역적으로 선언된 데이터 구조는 어디에 있습니까?

Barbara Streisand
풀어 주다: 2024-12-09 22:43:09
원래의
629명이 탐색했습니다.

Stack vs. Heap: Where Does a Globally Declared Data Structure in C   Live?

C의 메모리 할당: 전역 데이터 구조의 스택과 힙

C에서 전역적으로 데이터 구조를 선언할 때 다음과 같은 질문이 발생합니다. 스택 메모리나 힙 메모리를 소모합니다. 이를 완전히 이해하려면 프로세스가 사용하는 다양한 메모리 세그먼트를 이해하는 것이 중요합니다.

일반적으로 프로세스는 5개의 주요 메모리 영역을 보유합니다.

  1. 코드(텍스트 세그먼트) : 실행 가능한 코드가 포함되어 있습니다.
  2. 초기화된 데이터(data 세그먼트): 컴파일 타임에 값으로 초기화된 전역 및 정적 변수를 저장합니다.
  3. 초기화되지 않은 데이터(bss 세그먼트): 컴파일 타임에 초기화되지 않은 전역 및 정적 변수를 보관하고 초기화됩니다. 런타임 시 0으로 설정됩니다.
  4. 힙: 다음과 같은 연산자를 사용하여 획득한 동적으로 할당된 메모리 new 및 malloc.
  5. 스택: 지역 변수, 함수 매개변수 및 반환 주소를 저장합니다.

데이터 구조가 선언된 경우 원래 질문으로 돌아가기 전역적으로(함수 내에서가 아닌), 데이터 세그먼트(초기화된 데이터) 또는 bss 세그먼트(초기화되지 않은 데이터)에 할당됩니다. 초기화되었는지 여부. 이러한 세그먼트는 일반적으로 운영 체제에서 관리하며 프로그램에서 액세스할 수 없는 정적 메모리에 상주합니다.

따라서 C에서 전역적으로 선언된 데이터 구조는 스택 메모리를 사용하지 않습니다.

위 내용은 스택 대 힙: C Live에서 전역적으로 선언된 데이터 구조는 어디에 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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