Windows下memcpy_s如何在Linux下使用

Windows下代码如下

memcpy_s(pLine->ppBuf[i], m_ColorLineByte, pIn + nOffset, m_ColorLineByte);

方案 1:使用标准 memcpy + 手动检查(最通用)

// 检查参数有效性

if (pLine->ppBuf[i] == nullptr || pIn == nullptr ||

m_ColorLineByte == 0 || nOffset < 0) {

// 错误处理

return; // 或抛出异常

}

// 执行拷贝

memcpy(pLine->ppBuf[i], pIn + nOffset, m_ColorLineByte);

方案 2:使用 C11 的 memcpy_s(需编译器支持)

#if STDC_VERSION >= 201112L || STDC_LIB_EXT1

errno_t err = memcpy_s(pLine->ppBuf[i], m_ColorLineByte,

pIn + nOffset, m_ColorLineByte);

if (err != 0) {

// 错误处理

}

#else

// 回退到方案1

#endif

方案 3:使用 C++ 安全拷贝(推荐)

#include <algorithm> // for std::copy_n

try {

std::copy_n(pIn + nOffset, m_ColorLineByte, pLine->ppBuf[i]);

} catch (...) {

// 异常处理

}

相关推荐
稳兽龙3 分钟前
codeforces(1045)(div2)D. Sliding Tree
c++·算法··路径树
倔强的石头6 分钟前
java程序员如何搭建C++windows开发环境搭建(三)
c++·后端
博语小屋9 分钟前
程序(进程)地址空间(1)
linux
yunyi9 分钟前
使用acme.sh来实现自动化申请和续订TLS证书
linux·nginx·docker
未来可期LJ1 小时前
【Linux 小实战】自定义 Shell 的编写
linux·服务器
_君落羽_1 小时前
Linux操作系统——TCP服务端并发模型
linux·服务器·c++
望获linux3 小时前
【Linux基础知识系列】第一百一十篇 - 使用Nmap进行网络安全扫描
java·linux·开发语言·前端·数据库·信息可视化·php
Q741_1475 小时前
C++ 力扣 76.最小覆盖子串 题解 优选算法 滑动窗口 每日一题
c++·算法·leetcode·双指针·滑动窗口
花小璇学linux10 小时前
imx6ull-驱动开发篇42——Linux I2C 驱动框架简介
linux·驱动开发·嵌入式软件
凌肖战10 小时前
编写Linux下设备驱动时两种方案:内核态驱动开发和用户态驱动开发
linux·驱动开发