我正在尝试生成一个特殊的大型单片应用程序.我试图解决的问题是跟踪难以重现的巨大内存分配(30-80千兆字节,根据操作系统报告来判断).我相信问题是std :: vector调整为负32位整数值.唯一表现出这种行为的平台是Solaris(也许它是唯一能够成功分配这些连续内存块的平台).我可以用我的类全局替换std :: vector,将所有调用委托给真正的向量,观察可疑的分配(size > 0x7FFFFFFFu)吗?也许有选择地替换采用的构造函数size_t和resize()方法?甚至可能劫持全球运营商新品?
假设我有一个函数试图使用以下代码保护全局计数器:
static MyCriticalSectionWrapper lock;
lock.Enter();
counter = ++m_counter;
lock.Leave();
Run Code Online (Sandbox Code Playgroud)
是否有可能两个线程将调用其lock构造函数?实现这一目标的安全方法是什么?
c++ ×2