首页 > 解决方案 > “UA_ReadRequest_deleteMembers”错误问题的 OPC-UA 函数

问题描述

大家好我有一个问题

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

在此处输入图像描述

标签: copc-uaopen62541

解决方案


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

将 UA_NODEID_STRING() 替换为 UA_NODEID_STRING_ALLOC()。


推荐阅读