C에서 STL map 객체를 생성한다고 가정하십시오. 즉, map<string,char>mymap``$
입니다. 이제이 객체에 메모리가 어떻게 할당되는지 알고 싶습니다. 혼란스러운 점은 동적 할당이없고 이전에 컨테이너의 크기를 알 수 없다는 것입니다. 그래서, 객체가 어디에 그리고 어떻게 할당되는지 mymap?C++ STL 객체에 대한 메모리 할당
답변
그럼, 개체 mymap에 메모리가 할당 된 위치와 방법은 무엇입니까?
모든 표준 컨테이너의 기본 할당자는 std::allocator
이며, 여기서 컨테이너는 메모리를 가져오고 메모리가 완료 될 때까지 해제됩니다. 사용자 정의 할당자를 사용할 수 있으며 원할 경우 모든 할당 및 할당 해제를 추적 할 수 있습니다.
이
은 물론 거기에는 동적 할당을하지 않습니다, 그러나 그것은 후드입니다. std::map
은 일반적으로 트리로 저장되므로 새 객체가 삽입 될 때마다 새 노드가 할당됩니다. 역동적으로. new
을 명시 적으로 쓰지 않았다고해서 그것이 두포에서 발생하지 않는다는 것을 의미하지는 않습니다.
std::map
의 소멸자에서 노드가 자동으로 삭제됩니다. 그러나 노드가 동적으로 할당 된 객체를 포함하면 노드가지도에서 삭제되지 않습니다.
후드 아래에 메모리가 동적으로 할당 된 경우 메모리가 후드 아래에 또한 확보된다는 사실을 알려주십시오. – nirprat
@nirprat 예, 마지막 구문을 읽습니다. –
- 1. STL C++ 객체에 의한 메모리 할당
- 2. C++ STL 메모리 할당 자 컴파일 오류
- 3. ctypes를 통해 파이썬에 반환 된 객체에 대한 메모리 할당 해제
- 4. STL 용 사용자 지정 메모리 할당 자
- 5. C++ STL 준수 할당 자
- 6. C++ STL 질문 : 할당 자
- 7. C 번호 메모리/할당 정리
- 8. 메모리 할당/할당 해제 (Windows C++)
- 9. C++ 메모리 할당 문제가
- 10. c 메모리 할당
- 11. 메모리 누출의 C/메모리 할당 ++
- 12. 배열에 대한 메모리 재 할당 C++
- 13. C++에서 컨테이너에 대한 메모리 할당
- 14. 예외에 대한 메모리 할당
- 15. 메모리 할당 C
- 16. 개체에 메모리 할당 C#
- 17. C++ : 메모리 할당 자
- 18. C# 메모리 할당
- 19. C++ 동적 메모리 할당
- 20. 메모리 할당 순서는 C++
- 21. 목표 C : 메모리 할당
- 22. C++에서의 메모리 할당
- 23. C++/CLI : 문자열 핸들을위한 메모리 사전 할당
- 24. 공유 메모리 STL 맵
- 25. 메모리 할당
- 26. 배열의 객체에 대한 메모리 누수
- 27. C# 가상 메모리에 메모리 할당
- 28. C++ STL 메모리 관리 : 스택 또는 힙?
- 29. C++ 용 확장 래퍼 malloc 할당 자 STL
- 30. STL 벡터 할당
물론 동적 할당이 필요합니다. 물론 이동을하지 않아도되지만 삽입을 시작한 후에는 분명히 있습니다. 그것은 단지 클래스 안에 있습니다. – Jon