Примечание. Этот вопрос очень похож на Передача структуры C++ в анклав из приложения в Intel SGX . Я публикую его снова, так как сообщению почти 1 год, надеясь, что может быть какое-то решение. Пожалуйста, удалите это, если вы считаете, что это дубликат.
Я разрабатываю приложение Intel SGX. У меня есть класс (называемый SkipList) со структурой (называемой node) внутри него в моем ненадежном приложении. . Я пытаюсь передать эту структуру как *void**** с атрибутом **[user_check] в анклав.
struct node {
size_t key;
T2 value;
vector<size_t> hashlabel;
vector<node*> forward;
};
Как только я получу это внутри анклава, я приведу это к типу структуры, как показано ниже.
SkipList<int,string>::node* head = static_cast<SkipList<int,string>::node*>(Node);
Когда я начинаю отлаживать это, я вижу, что адрес «головы» после приведения правильный (я также проверил этот адрес на стороне приложения, оба адреса одинаковы), а также правильный адрес «прямого» члена. Но когда я пытаюсь увидеть элементы «вперед», я вижу только 1 элемент. На самом деле элементов должно быть больше 15.
Может ли кто-нибудь сказать мне, является ли это проблемой с реализацией векторов SGX STL? Почему я не могу видеть это, как ожидалось?