注意:- 这个问题非常类似于Passing C++ struct to enclave from app in Intel SGX。我再次发布它,因为该帖子已经快 1 年了,希望可能有一些解决方案。如果您认为这是重复的,请删除它。
我正在开发一个英特尔 SGX 应用程序。在我的不受信任的应用程序中,我有一个类(称为SkipList),其中有一个结构(称为node )。我正在尝试将此结构作为具有 **[user_check]属性的 *void**** 传递到飞地中。
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);
当我开始调试时,我看到转换后的“head”地址是正确的(我也在应用程序端检查了这个地址,两个地址相同),并且“forward”成员的地址也是正确的。但是当我尝试查看“前进”的元素时,我只能看到 1 个元素。实际上应该有更多的15个元素。
有人可以告诉我这是否是向量的 SGX STL 实现的问题?为什么我无法按预期看到它?