Функция OPC-UA для UA_ReadRequest_deleteMembers Ошибка Проблема

Привет всем у меня есть один вопрос

Я использую OPC-UA для клиента, у меня проблема

Это код проблемы

UA_ReadRequest requestPos;
UA_ReadRequest_init(&requestPos);
UA_ReadValueId idPos;
UA_ReadValueId_init(&idPos);
idPos.attributeId = UA_ATTRIBUTEID_VALUE;
idPos.nodeId = UA_NODEID_STRING(6, (char*)"::AsGlobalPV:gMotionPos");
requestPos.nodesToRead = &idPos;
requestPos.nodesToReadSize = 1;

UA_ReadResponse responsePos = UA_Client_Service_read(client, requestPos);

UA_ReadRequest_deleteMembers(&requestPos);

Я хочу очистить UA_ReadRequest requestPos;, поэтому использую UA_ReadRequest_deleteMembers(&requestPos);, но компилятор сказал: «****. Exe вызвал точку останова. Происходит». Я не могу понять эту ошибку.

введите описание изображения здесь


person JeaHwan Chung    schedule 15.02.2019    source источник
comment
Какой OPC UA SDK вы там используете? Это стек фундамента c, или open62541, или ...?   -  person Frank Meerkötter    schedule 15.02.2019
comment
Я использую open62541   -  person JeaHwan Chung    schedule 15.02.2019


Ответы (1)


Вы создали строку nodeid, не являющуюся владельцем строки. Члены удаления освобождают используемую память, даже если она не принадлежит, что приводит к повреждению памяти.

Замените UA_NODEID_STRING () на UA_NODEID_STRING_ALLOC ().

person Frank Meerkötter    schedule 15.02.2019