就是说在没有调用DeleteCriticalSection()的情况下多次调用
InitializeCriticalSection
会怎么样,需要多次调用DeleteCriticalSection()吗。

解决方案 »

  1.   

    不需要。
    你最好使用MFC的类CCriticalSection(afxmt.h),这样就不用担心这些问题了。
      

  2.   

    多次调用,会产生多个临界区,其中的参数作为返回值
    所以你调用多次DeleteCriticalSection()也不会全部释放掉你初始化的所有临界区,
    这样的话会有内存或者是资源泄露
      

  3.   

    像堆栈操作,先进后出DeleteCriticalSection
      

  4.   

    同意:S_W_A_T(冰龙) 
    InitializeCriticalSection 申请内存,并初始化,多次使用会有内存泄露
    为什么要多次使用InitializeCriticalSection ?不能用多个临界区代替吗?
      

  5.   

    个人意见:
    临界区的作用是为属于同一进程的线程提供互斥访问,因此临界区对进程来说是全局的,即多次调用
    InitializeCriticalSection是初始化同一的第一次调用是分配的内存区域,即多次调用InitializeCriticalSection和一次调用DeleteCriticalSection应该不会有内存泄漏
    不过在一线程EnterCriticalSection时,另线程又去InitializeCriticalSection时将等待,不过这种情况没有试过,不好绝对断言
      

  6.   

    开玩笑,一个Critical_Setion变量只要一次初始化
      

  7.   

    wangjs720(听雨舟) :
    知道只需要一次初始化,可是这里的问题是:如果多次初始化了会怎么样。