2

大家好我有一个问题

我为客户端使用 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 导致断点。发生”。我无法理解这个错误。

在此处输入图像描述

4

1 回答 1

0

您创建了一个非拥有的字符串 nodeid。删除成员将释放已使用的内存,即使它不是拥有的,也会导致内存损坏。

将 UA_NODEID_STRING() 替换为 UA_NODEID_STRING_ALLOC()。

于 2019-02-15T07:07:59.070 回答