C의 문 int ** p = NULL;
에 대해서는 p
, *p
, **p
의 메모리 할당에 대해 논의하십시오. 그것은 스택 또는 null 위치 또는 다른 곳에서있을 것입니다 ???메모리 할당 ** p
답변
p
은 스택에 int **
포인터이고 값은 NULL
입니다.
*p
을 평가하려고하면 NULL
을 참조 해제하려고 시도 할 때 런타임 오류가 발생합니다. 그러나 런타임 오류가 발생하지 않으면 메모리 위치 0
의 값이됩니다.
**p
을 평가하려고 시도하는 것이 불가능하므로 *p
은 평가할 수 없습니다 (런타임 오류가 발생합니다). 그러나 *p
이 런타임 오류를 일으키지 않으면 **p
은 메모리 위치 0
의 값이 가리키는 메모리 위치의 값이됩니다.
편집 : *p
및 **p
은 별도의 변수로 존재하지 않으므로 어디에도 할당되지 않습니다. 메모리에는 하나의 변수, p
이 있으며 스택에 저장됩니다. 마치 int i = 10;
일 경우 묻는 것과 같습니다. 어디에 i * 5
이 저장되어 있습니까?
* p와 ** p는 할당받을 것입니다 ?? – user1623827
만약'p'가 키워드'static'없이 함수에 정의되어 있으면 스택 상에있을 것입니다; 'p'가 함수 외부에 정의 된 경우 (또는'static' 키워드를 사용하지만 함수 내에있는 경우) 스택에 포함되지 않습니다. 'p' 자체의 주소는 'null 위치'에 있지 않습니다. –
@ user1623827'* p'와'** p'는 프로그램을 만들지 않으면 할당되지 않습니다. 할당은 암시 적이 지 않습니다. –
p
은 어딘가를 가리키는 변수입니다.- 해당 유형은
int**
이며 이는int
에 대한 포인터를 가리킬 수 있음을 의미합니다. 메모리를 할당하는 코드를 작성하지 않은 이후 - 는 어떠한 메모리 할당
- ..
p
자체 메모리 할당 당연히 제외 .. 일어나지 않는다 : 32 비트 어드레스 공간을 가정하여, 메모리의 4 바이트는에 할당 stack이고 해당 메모리 주소의 값은 0 (NULL)입니다.
- 1. 메모리 누출의 C/메모리 할당 ++
- 2. C에서의 동적 메모리 할당
- 3. 메모리 할당
- 4. 메모리 할당
- 5. 할당 메모리
- 6. 메모리 할당
- 7. 메모리 할당
- 8. 메모리 할당
- 9. 메모리 할당 = 새로운 파생()
- 10. C++에서의 메모리 할당
- 11. 동적 할당 - 메모리 관리
- 12. Fortran의 동적 메모리 할당
- 13. 포인터 및 메모리 할당 구분
- 14. 메모리 할당 순서는 C++
- 15. 할당 취소 및 메모리 할당 문제가
- 16. 이상한 iOS 메모리 할당 동작
- 17. 64 비트 시스템에서 메모리 할당
- 18. 상수 문자 배열을위한 메모리 할당
- 19. Java에서 메모리 할당
- 20. 이중 포인트 메모리 할당
- 21. 어셈블리 메모리 할당
- 22. 메모리 구조에 할당
- 23. 문자열 메모리 할당
- 24. 포인터 메모리 할당 문제
- 25. 어셈블리 런타임 메모리 할당
- 26. 메모리 할당 Java
- 27. UINavigation의 setViewControllers : 메모리 할당
- 28. 메모리 할당 C
- 29. 프로그램 메모리 할당
- 30. 할당 초과 Memcache 메모리
하지만 대답은 토론해서는 안됩니다. 대신 특정 내용을 묻고 싶습니까? – cnicutar
숙제 문제입니까? – peacemaker
@peacemaker 아니요. 내 학교의 C 코스 포인터에서 발견 된 바로 이상한 질문입니다. – user1623827