ios - 大家中午好,xcode 中如何查看一个对象是在堆区还是在栈区?
迷茫
迷茫 2017-04-18 09:47:36
0
3
892

大家中午好,xcode 中如何查看一个对象是在堆区还是在栈区?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

모든 응답(3)
黄舟

보기가 불가능해야 합니다.
새로 시작하는 초기화 방법, 할당, 유지 및 복사는 참조 카운팅으로 관리되는 개체를 포함하여 모두 힙 영역에 있습니다.
상수는 스택 영역에 있습니다.

간단합니다. NSString *aString = @"aaa"를 제거하세요. 编译时会转换为常量

이론적으로 다른 Objective-C 객체는 힙 영역에 있습니다.

또한 블록도 예외입니다. 특정 지식 포인트에 대해서는 메모리 관리에 대해 배울 수 있습니다.

巴扎黑

객체가 힙 영역인지 스택 영역인지 확인하는 방법
============================== ==
질문이 다소 모호합니다. 메소드 실행 중이라면 네이티브 유형(또는 값 유형)이 로컬로 정의됩니다. 그런 다음 스택에 있어야 합니다. 함수 실행이 끝나면 직접 삭제됩니다. 다른 참조 유형(또는 oc의 인터페이스)은 힙에 생성되고 ARC는 이를 정리하는 역할을 담당합니다.

질문하고 싶은 건 Foo 클래스인 것 같아요 {

으아아아

}
이때 a 필드는 스택인가요, 힙인가요? 이것이 문제라면 a가 힙에 있지만 값 유형이라고 알려주세요.

값 유형은 메모리가 스택에 할당되는지 힙에 할당되는지와는 아무런 관련이 없으며 값별 복사(암시적으로 불변)에만 관련됩니다.

Peter_Zhu

일반적인 상황에서는 주소를 인쇄하여 힙에 있는지 스택 메모리에 있는지 확인할 수 있습니다. 스택은 높은 주소부터 아래쪽이고, 힙은 낮은 주소부터 위쪽입니다. .... 이런 종류의 것이어야 합니다. 스택에서 주목해야 할 것은 TEXT 세그먼트입니다. NSString은 기본적으로 힙 주소보다 낮으며 구별하기 쉽습니다. 기억이 어떻게 나누어져 있는지 살펴보세요.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿