>  기사  >  백엔드 개발  >  객체는 메모리의 어디에 있습니까? 스택, 힙 또는 다른 곳?

객체는 메모리의 어디에 있습니까? 스택, 힙 또는 다른 곳?

Linda Hamilton
Linda Hamilton원래의
2024-11-14 19:05:02672검색

Where Do Objects Reside in Memory: Stack, Heap, or Somewhere Else?

스택과 힙 개체 생성

스택 또는 힙에서의 개체 생성에 대한 우려를 제기하는 질문입니다. 제공된 코드(Object o:)는 스택에서 객체 생성을 의미하지만 스택이나 힙을 명시적으로 언급하지는 않습니다. 이 차이점을 명확히 하겠습니다.

C에서 메모리 내 객체의 위치는 스택이나 힙이 아닌 저장 기간에 따라 결정됩니다. 자동, 동적, 정적, 스레드 로컬의 네 가지 저장 기간이 있습니다. 자동 저장소는 주로 호출 스택의 로컬 변수에 사용되는 반면 동적 저장소는 'new'로 힙에 할당된 개체에 사용됩니다.

  • 스택: 자동 저장소, 일반적으로 지역 변수용으로 예약되어 있습니다.
  • 힙: 동적 저장소, 'new'로 생성된 객체에 사용됩니다.
  • 정적 메모리: 정적(또는 스레드 -local) 객체는 스택이나 힙이 아닌 별도의 영역에 상주합니다.

객체 생성

  • 객체 o; // 자동 저장 기능이 있는 지역 변수(스택)
  • Object o = Object(); // 동적 저장소(힙)
  • Object* o; // 자동 저장 기능이 있는 객체에 대한 포인터(스택)
  • Object* o = new Object(); // 동적 저장(힙)이 있는 객체에 대한 포인터

컨텍스트 및 저장 기간

객체의 저장 기간은 해당 컨텍스트에 따라 결정됩니다. 예를 들어:

  • foo.o: 정적으로 할당된 객체(스택이나 힙 모두 아님)의 멤버 변수
  • f.o: 멤버 로컬로 할당된 객체(스택)의 변수
  • p->o: 동적으로 할당된 객체(힙)의 멤버 변수

포인터 및 저장

포인터 자체는 객체이며 동일한 저장 규칙을 따릅니다. 스토리지는 가리키는 유형이 아니라 컨텍스트에 따라 결정됩니다. 가리키는 유형에 따라 가리키는 객체의 저장 기간이 결정됩니다.

전반적으로 저장 기간을 이해하는 것은 C의 메모리 관리를 이해하는 데 중요합니다. 객체는 저장 기간 및 컨텍스트에 따라 다양한 메모리 영역에 상주할 수 있습니다.

위 내용은 객체는 메모리의 어디에 있습니까? 스택, 힙 또는 다른 곳?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.