MFC创办界面线程时测试提示内存不足

MFC创建界面线程时测试提示内存不足
如题,用网上如下方法创建界面线程,在vs2005中编译调试,界面没有显示,直接提示内存不足,但是实际内存空闲很多,请问这是怎么回事?
创建方法如下:
1.创建MFC对话框程序,添加一个启动用户界面线程的按钮
2.向程序中添加一个对话框,并建立相应的对话框类CThreadDlg,该对话框将被作为用户界面线程的主窗口。
3.向程序中添加一个以CWinThread为基类的新类CUIThread,该类用于启动一个用户界面线程。
4.在UIThread.cpp中加入#include "ThreadDlg.h",并在CUIThread::InitInstance()中加入
  CThreadDlg dlg;
  m_pMainWnd=&dlg;
  dlg.DoModal();
  确保InitInstance函数最后return TRUE;
5.CMyThread::InitInstance()中创建的CThreadDlg将与主窗口在独立的线程中运行,可以在CThreadDlg中加入各种执行耗时任务的代码而不会影响主窗口的运行。
6.在主窗口的**dlg.h加入#include "UIThread.h",双击按钮添加CWinThread *pThread=AfxBeginThread(RUNTIME_CLASS(CUIThread));开启线程。
等解释




------解决方案--------------------
线程中是不是占用堆内存超过4MB?
------解决方案--------------------
大约计算下吧。
-
以前好像在那本书里看到的。
上面说错了。
单个函数栈内存使用超过4MB,会导致程序崩溃。


引用:
引用:
线程中是不是占用堆内存超过4MB?

这个怎么查看啊?不太清楚。。。

------解决方案--------------------
引用:
大约计算下吧。
-
以前好像在那本书里看到的。
上面说错了。
单个函数栈内存使用超过4MB,会导致程序崩溃。


引用:

引用:
线程中是不是占用堆内存超过4MB?

这个怎么查看啊?不太清楚。。。
为什么孙鑫的视频里说是4GB
------解决方案--------------------
如果是一运行就内存不足了,一般不是堆内存用完了,而是栈内存用完了。
而栈内存用完一般是因为有几个函数相互调用,导致递而不归的现象,一下子出来几百万层的堆栈,把栈空间用完了。
可以从这方面找下原因。
也有可能是在某个函数中一下子在栈上面分配了大量的内存,也会导致栈溢出。比如
char buff[1024*1024*1024]这种。