Хитрый это:
У меня есть проект C ++ CLI с неуправляемым классом, который регистрируется для обратного вызова с использованием внешней библиотеки и вызывается для этого обратного вызова с указателем на неуправляемый класс данных.
Когда я пытаюсь прочитать элементы, которые были получены в классе данных посредством обратного вызова, я получаю утверждение _crtIsValidHeapPointer (pUserData) в файле: dbgheap.c, строка: 1473.
Я видел, что у класса данных есть сложные поля, а не только блицбольные поля, и я получаю утверждение при получении сложных полей. Я думаю, что это может быть связано со сложными полями, имеющими ссылочные аргументы const в своих конструкторах.
Есть ли у CLI проблемы с вызовом константных ссылок?
Просто для попытки - я попытался просто вызвать конструктор в неуправляемой куче и получил то же утверждение:
CStructure* struct = new CStructure(); // I got assertion here
где конструктор выглядит так:
class CStructure
{
public:
CStructure(const CHelper& helperId = CHelper::nullId(),
int nInstance = NullInstance);
};
Как мне избежать этого, если в этом проблема?