3

Hello Everyone i have one question

I Using OPC-UA for client, I have some problem

This is Problem code

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);

I want to clear UA_ReadRequest requestPos;, so I use UA_ReadRequest_deleteMembers(&requestPos);, but compiler said: "****.exe caused a breakpoint. Occur ". I can't understand this error.

enter image description here

gudok
  • 4,029
  • 2
  • 20
  • 30

1 Answers1

0

You have created a non-owning string nodeid. The delete members will free the memory used, even though it's not owned resulting in a memory corruption.

Replace the UA_NODEID_STRING() with UA_NODEID_STRING_ALLOC().

Frank Meerkötter
  • 2,778
  • 2
  • 20
  • 26