1

MFC CString がヒープまたはスタックにメモリを割り当てているかどうかを確認するにはどうすればよいですか? Windows Mobile/Windows CE プラットフォーム用にコンパイルしています。

私は他の誰かによって開発されたプロジェクトに取り組んでおり、特定の状況下でスタック オーバーフローを目撃しました。スタックに割り当てられたカスタム SQLite レコードセット クラス (多くの CString メンバー変数を持つ) がスタック オーバーフローを引き起こしているかどうかを調べようとしています。

4

1 に答える 1

1

"多くの" CStrings を含むスタックにオブジェクトを配置する場合、一部のデータはスタック上にあり、一部はヒープ上にあります。

CString の「管理」データは、オブジェクトそのものです。sizeof(CString) は、その大きさを教えてくれます。そのサイズと実際の文字配列へのポインタに関する情報が含まれています。文字配列自体はヒープから取得されます。CString::GetLength() または呼び出しが何であれ、ヒープでどれだけのスペースが使用されているかがわかります。

sizeof(YourCustomRecordset) は、オブジェクトをスタックに置いたときに、オブジェクトが占めるスタック スペースの量を示します。

于 2010-05-25T18:51:13.903 に答える