2010-05-25 1 views
1

Как я могу определить, выделяет ли MFC CString память в куче или стеке? Я собираюсь для платформы Windows Mobile/Windows CE.Как определить, выделяет ли CString память в куче или стеке?

Я работаю над проектом, разработанным кем-то другим, и при определенных обстоятельствах я наблюдал переполнение стека. Я пытаюсь выяснить, не вызваны ли потоки стека отдельными классами набора записей SQLite (со многими переменными-членами CString), указанными в стеке.

ответ

1

Если вы кладете объект в стек, содержащий «много» CStrings, у вас будут некоторые данные в стеке, а некоторые в куче.

Данные управления «CString» - это то, что сам объект. sizeof (CString) расскажет вам, насколько он большой. Он содержит информацию о его размере и указателе на массив символов. Сам массив символов берется из кучи. CString :: GetLength() или любой другой вызов, который вы укажете, сколько места занимает куча.

sizeof (YourCustomRecordset) расскажет вам, сколько стекового пространства занимает ваш объект, когда вы кладете его в стек.

 Смежные вопросы

  • Нет связанных вопросов^_^