2013-03-09 2 views
6

저는 Objectiv C를 배우고 있습니다. 포인터가 들어있는 알 수없는 영역을 이해하고 정확한 용어를 실제로 쓰려고 노력하면서 "힙에 살다"라는 말을 계속 듣습니다. .like "우리는 우리의 재산을 strong으로 만들어야합니다. 왜냐하면 그것은 힙에 살지 않을 것이기 때문입니다. 그 재산은 사적인 것입니다. 큰 차이가 있다는 것을 압니다. 우리가 세고 싶은 것을 확실히하고 싶다는 것은 분명합니다. 이 객체에 대한 참조는 autorelease가 정리하지 않을 것입니다. (우리가 지금까지 알고있는 것으로부터 "보유"하고 싶습니다.)하지만 자주 사용되기 때문에 용어를 이해하고 싶습니다."힙에 살아"란 무엇을 의미합니까?

감사합니다.

+0

엉덩이 또는 힙 ???? – Shashank

+0

@Shashank 죄송합니다. 내 잘못 (내 언어가 아닙니다./변명은 아니지만) – JohnBigs

+1

"우리는 재산을 강하게 만들어서 힙에 살 수 없어야합니다." 당신이 우리를 실제 사용법으로 지적한다면 도움이 될 것입니다. –

답변

14

C가 사용하는 세 가지 주요 메모리 영역이 있습니다 (exte nsion, 목표 C) 데이터를 저장하기위한 프로그램 :

  • 정적 영역
  • 또한 "스택")으로 알려진 자동 영역 (또한 "힙라고도
  • 동적 영역 (").

당신이 new 또는 alloc 메시지를 자신의 클래스를 전송하여 객체를 할당는, 결과 객체는 동적 저장 영역에 할당되므로 객체는 힙에 살고 있다고한다. 모든 Objective-C 오브젝트는 이와 비슷합니다 (참조이 오브젝트는 세 개의 메모리 데이터 영역 중 하나에있을 수 있음). 반대로 원시 기본 변수와 배열은 스택에 "살아"있지만 전역 원시 변수와 배열은 정적 데이터 저장소에 있습니다. 코드가를 free 때 결정에 대한 책임 것입니다 : 당신이 참조 카운트되지 않을 것 할당을하는 경우 malloc/calloc/realloc를 사용하여 힙에서 메모리를 할당 할 수 있지만

만 힙 객체 참조는, 계산됩니다 할당 된 동적 메모리.

관련 문제