线程创建之初,系统要为线程分配一个栈。我的问题是:1、系统如何使用这个栈?2、用户程序如何使用这个栈?3、什么样的用户程序会涉及到对线程的栈的操作?

解决方案 »

  1.   

    1、系统如何使用这个栈?
    在创建线程时,要生成栈,销毁线程时,销毁栈,如果在销毁栈时,栈被破坏了,则后果未定义
    cpu在切换线程时,要切换上下文,其中就包括了栈2、用户程序如何使用这个栈? 
    使用局部变量3、什么样的用户程序会涉及到对线程的栈的操作?
    缓冲溢出,会破坏线程的栈
      

  2.   

    UINT MyThread(LPVOID pParam)
    {
      char buffer[1024];//线程栈
      int i;//线程栈
      i=::Some_Global_Function(int para1... <---需要线程栈来传递参数等
      CString str;//线程栈
      str=XXXXX ;//str对象占用线程栈,但是它的缓冲用的是全局堆,不消耗线程栈
      
    }