黄舟2017-04-18 09:49:36
보기가 불가능해야 합니다.
새로 시작하는 초기화 방법, 할당, 유지 및 복사는 참조 카운팅으로 관리되는 개체를 포함하여 모두 힙 영역에 있습니다.
상수는 스택 영역에 있습니다.
간단합니다. NSString *aString = @"aaa"를 제거하세요. 编译时会转换为常量
이론적으로 다른 Objective-C 객체는 힙 영역에 있습니다.
또한 블록도 예외입니다. 특정 지식 포인트에 대해서는 메모리 관리에 대해 배울 수 있습니다.
巴扎黑2017-04-18 09:49:36
객체가 힙 영역인지 스택 영역인지 확인하는 방법
============================== ==
질문이 다소 모호합니다. 메소드 실행 중이라면 네이티브 유형(또는 값 유형)이 로컬로 정의됩니다. 그런 다음 스택에 있어야 합니다. 함수 실행이 끝나면 직접 삭제됩니다. 다른 참조 유형(또는 oc의 인터페이스)은 힙에 생성되고 ARC는 이를 정리하는 역할을 담당합니다.
질문하고 싶은 건 Foo 클래스인 것 같아요 {
으아아아}
이때 a 필드는 스택인가요, 힙인가요? 이것이 문제라면 a가 힙에 있지만 값 유형이라고 알려주세요.
값 유형은 메모리가 스택에 할당되는지 힙에 할당되는지와는 아무런 관련이 없으며 값별 복사(암시적으로 불변)에만 관련됩니다.
天蓬老师2017-04-18 09:49:36
일반적인 상황에서는 주소를 인쇄하여 힙에 있는지 스택 메모리에 있는지 확인할 수 있습니다. 스택은 높은 주소부터 아래쪽이고, 힙은 낮은 주소부터 위쪽입니다. .... 이런 종류의 것이어야 합니다. 스택에서 주목해야 할 것은 TEXT 세그먼트입니다. NSString은 기본적으로 힙 주소보다 낮으며 구별하기 쉽습니다. 기억이 어떻게 나누어져 있는지 살펴보세요.