这是一个棘手的问题:
我有一个带有非托管类的C ++ CLI项目,该类使用外部库注册回调,并使用指向非托管数据类的指针调用此回调。
当我尝试通过回调读取数据类中收到的成员时,我在文件:dbgheap.c,line:1473上得到_crtIsValidHeapPointer(pUserData)的断言。
我看到数据类有复杂的字段,不仅是blittable字段,而且我在检索复杂字段时得到断言。我认为这可能与其构造函数中具有const引用参数的复杂字段有关。
CLI是否存在调用const引用的问题?
只是试一试 - 我试着在非托管堆上调用构造函数并得到相同的断言:
CStructure* struct = new CStructure(); // I got assertion here
构造函数如下所示:
class CStructure
{
public:
CStructure(const CHelper& helperId = CHelper::nullId(),
int nInstance = NullInstance);
};
如果出现问题,我该如何避免这种情况?