2
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.
}

请告诉我导致错误的原因以及如何解决。

4

1 回答 1

1

詹姆斯的评论是对的。尝试这个:

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

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

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

使用 Windows 调试工具中的 AppVerifier 可以轻松检测到此类事情。

祝你好运!

于 2011-08-04T04:23:07.597 回答