У меня есть глобальный вектор вектора структур этой формы:
vector<vector<stackEntry>> shadowStacksVector
, где идея состоит в том, чтобы иметь vector<stackEntry>
на поток.
В функции запуска потока я делаю следующее:
vector<stackEntry> sstack;
shadowStacksVector.push_back(sstack);
tdata->shadowStack = &(shadowStacksVector.back());
где tdata
- структура, содержащая локальное хранилище потока.
Я хотел бы иметь для каждого потока ссылку на вектор элементов стека, чтобы каждый поток мог добавлять или удалять элементы в своем собственном стеке.
Концептуально я считаю, что push_back
делает копию элемента, поэтому я подумал, что это должно сработать. Однако, когда я пытаюсь добавить / удалить элементы из tdata->shadowStack
, моя программа падает.
На этой странице, если я заменю вектор векторов на массив, подобный этому:
vector<stackEntry> shadowStacksVector[256]
все отлично работает.