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 回答