2010-05-25 2 views
1

MFC CString이 힙 또는 스택에 메모리를 할당하는지 어떻게 알 수 있습니까? Windows Mobile/Windows CE 플랫폼 용으로 컴파일 중입니다.CString이 힙이나 스택에 메모리를 할당하는지 어떻게 알 수 있습니까?

다른 누군가가 개발 한 프로젝트에서 작업하고 있으며 특정 상황에서 스택 오버플로가 발생했습니다. 스택에 할당 된 사용자 지정 SQLite 레코드 집합 클래스 (많은 CString 멤버 변수 포함)가 스택 오버플로를 일으키는 지 파악하려고합니다.

답변

1

"많은"CString이 포함 된 스택에 개체를 올려 놓으면 스택에 일부 데이터가 있고 일부 데이터에는 힙이 있습니다.

CString "관리"데이터는 개체 자체입니다. sizeof (CString)가 얼마나 큰지 알려줍니다. 여기에는 크기 및 실제 문자 배열에 대한 포인터에 대한 정보가 포함됩니다. 문자 배열 자체는 힙에서 가져옵니다. CString :: GetLength() 또는 호출이 무엇인지 알려주면 힙에서 차지하는 공간의 크기를 알 수 있습니다.

sizeof (YourCustomRecordset)는 스택에 놓았을 때 스택 공간이 얼마나 많이 차지하는 지 알려줍니다.

관련 문제