当前位置: 首页 > 知识库问答 >
问题:

Memcpy unique_ptr到向量

阴鸿才
2023-03-14
int ReadByName (std::vector<unsigned char> &value, const char handleName[], std::ostream &out, const long &port, const AmsAddr &server)
{
        uint32_t bytesRead;

        out << __FUNCTION__ << "():  ";
        
        if (this->handle == 0)
            handle = getHandleByName(out, port, server, handleName);
        if (bufferSize == 0)
            bufferSize = getSymbolSize(out, port, server, handleName);

        const auto buffer = std::unique_ptr<uint8_t>(new uint8_t[bufferSize]);

        const long status = AdsSyncReadReqEx2(  port,
                                                &server,
                                                ADSIGRP_SYM_VALBYHND,
                                                handle,
                                                bufferSize,
                                                buffer.get(),
                                                &bytesRead);
        
        if (status) {
            out << "ADS read failed with: " << std::dec << status << '\n';
            return 2;
        }
        value.clear();
        value.reserve(bufferSize);
        std::memcpy(&value, buffer.get(), bufferSize);
        return 0;
}

共有1个答案

太叔英卫
2023-03-14

解决这个问题的正确方法是什么?

它将直接读入向量,而不是稍后复制的单独数组。

如果AdsSyncReadReqEx2()的读取操作失败,则值已经被清除。

 类似资料:
  • 我试图将元组向量转换为向量[人],但上面的代码会导致强制转换异常,即使存在隐式的元组-人转换函数? 线程“main”java中出现异常。lang.ClassCastException:scala。Tuple2无法转换为示例。例如,测试$人。测试$$anonfun$2$$anonfun$应用$1。在scala应用(测试scala:19)。收集迭代器$类。scala上的foreach(迭代器。scal

  • 我有一个超文本标记语言登录页面,其中我有一个管理和用户的单选按钮,根据它,如果用户选择管理员,那么它应该重定向到管理员登录页面,如果他选择用户,那么它应该转到用户登录页面。 html登录页面如下: 用户的admin_login.php页面如下所示: 会话_start(); $email=$_POST["email"]; $psw=$_POST["psw"]; $name=“”; 包括db_conf

  • 隐私设置->清除浏览数据(从时间开始) https/ssl->管理证书->删除所有项(包括证书) 检查没有书签。 Firefox也有类似的问题,但它的解决方案不适用于Chrome。有人对我能做些什么有什么建议吗?提前感谢您的帮助!

  • 我正在使用Firefox,在设置服务器时,我一直在摆弄重定向。现在,Firefox已经缓存了从http://example.com/到https://example.com/和从http://sub.example.com/到https://sub.example.com/的301重定向。 我已经尝试了以下几件事: null 我的Firefox版本是38.0.1,我使用的是Windows8.1。我

  • 重定向到一个 URL 。 使用 window.location.href 或 window.location.replace() 重定向到 url 。 传递第二个参数来模拟链接点击(true - 默认值)或HTTP重定向(false)。 const redirect = (url, asLink = true) => asLink ? (window.location.href = url)

  • 我试图使用nginx作为双向SSL/相互SSL的web逻辑的反向代理。 客户端<=双向SSL=>NGINX<=双向SSL=>WebLogic服务器 客户端到NGINX双向SSL工作良好,但在上游连接到web逻辑上出现以下错误。 nginx调试日志: 以下是我对上游的nginx配置: 我尝试了各种选项,包括注释下面的配置。 如果我尝试使用openssl c_client命令行,我能够连接并获得HTT