我查看了几个类似的问题,但我无法找到适合我情况的解决方案。我正在尝试做一个omp并行循环。在我在并行区域中的一个函数内部,我试图创建m_buffer,我猜 共享(这是一个非常庞大和复杂的代码片段,我是一个用户)。
//Vector of pointers, each of which points to the start of some one-way list of free elements of same size.
//The size of the elements in each list is determined by list's index in the vector,
//namely the size of the element is (sizeof(void) * (index + 1)).
std::vector<char*> m_buffer;
...
bufIdx = i_element_size / sizeof(void*) - 1;
...
if (m_buffer[bufIdx] == nullptr)
{
...
}
else
{
//comes here!
}
显然,一个线程尝试在索引为0的缓冲区内分配一个元素。附加到此问题,您将在使用vs 2013的调试中看到缓冲区。 我想知道是否有办法检测旁边的情况如果条件。