簡體   English   中英

為什么在推送包含critical_section的對象時出現內存錯誤?

[英]why there is a memory error while I push a object which contain a critical_section?

class Wrap
{
  CRITICAL_SECTION cs_;
public:
  Wrap() { InitializeCriticalSection(&cs_); }
  ~Wrap() { DeteteCriticalSection(&cs_); }
  Wrap & operator=(const Wrap& rhs) { return *this; }
}

int main()
{
  std::vector<Wrap> v;
  v.push_back(Wrap());   //Memory error.
}

請告訴我導致錯誤的原因以及如何解決。

詹姆斯的評論是對的。 嘗試這個:

class Wrap
{
    CRITICAL_SECTION cs_;
public:
    Wrap()
    {
        InitializeCriticalSection(&cs_);
    }

    Wrap(const Wrap&)
    {
        InitializeCriticalSection(&cs_);
    }

    ~Wrap()
    {
        DeleteCriticalSection(&cs_);
    }   
};

使用Windows的調試工具中的AppVerifier可以輕松檢測到此類情況。

祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM