为什么当我推送包含 critical_section 的对象时出现内存错误?

发布于 2024-11-27 23:24:04 字数 345 浏览 0 评论 0原文

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() { DeteteCriticalSection(&cs_); }
  Wrap & operator=(const Wrap& rhs) { return *this; }
}

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

Please tell me what lead the error and how can I fix it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

套路撩心 2024-12-04 23:24:04

詹姆斯的评论是正确的。试试这个:

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

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

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

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

祝你好运!

James was right in his comment. Try this:

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

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

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

Such things can be easily detected with AppVerifier from Debugging tool for windows.

Good luck!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文