有一个函数,
void a()
{
     char a[1024*4];     char b[1024*4];     char c[1024*4];
}
,是在完成端口的工作线程里面调用的,虽然a,b,c的大小是一样的,但是因为逻辑关系,需要暂时存储数据,所以不能复用,就申请了a,b,c这三个大数组。现在有调用这个函数的线程有6个,不知道这样长时间运行,会不会有隐患,比如栈溢出导致崩溃之类的。
哪位了解,帮忙解惑一下,感谢!

解决方案 »

  1.   

    char a[1024*4];  char b[1024*4];  char c[1024*4];
    定义成全局变量(不是类里的全局变量,是工程的全局变量),这样就只要编绎成功并能运行就没问题
      

  2.   

    变量生存周期要明确,放全局。
    要加锁的1.CEvent
    2.CMutex
    3.CriticalSection
    4.Semaphore4选1 做互斥保证
      

  3.   

    void a()
    {
      char a[1024*4];  char b[1024*4];  char c[1024*4];
    }
    楼主这个定义的是栈数据,函数调用完了就不存在了,而且你开的是12K大小,VC默认的栈大小好像是1MB,最好还是把这个数据放到全局或者是堆中。