如何判断 MFC CString 是在堆上还是堆栈上分配内存?我正在为 Windows Mobile/Windows CE 平台编译。
我正在处理一个由其他人开发的项目,并且我在某些情况下目睹了堆栈溢出。我试图弄清楚分配在堆栈上的自定义 SQLite 记录集类(具有许多 CString 成员变量)是否导致堆栈溢出。
最佳答案
如果您将一个对象放入包含“许多”CString 的堆栈中,您将在堆栈中拥有一些数据,在堆中拥有一些数据。
CString“管理”数据就是对象本身。 sizeof(CString) 会告诉你它有多大。它包括有关其大小和指向实际字符数组的指针的信息。字符数组本身是从堆中获取的。 CString::GetLength() 或任何调用都会告诉您堆上占用了多少空间。
sizeof(YourCustomRecordset) 会告诉您当您将对象放入堆栈时它占用了多少堆栈空间。
关于c++ - 我如何判断 CString 是在堆上还是在堆栈上分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2907091/