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 (...) {

// 异常处理

}

相关推荐
Run_Teenage12 小时前
Linux:深刻理解缓冲区
linux
youxiao_9012 小时前
kubernetes 概念与安装(一)
linux·运维·服务器
凡梦千华13 小时前
logrotate日志切割
linux·运维·服务器
wdfk_prog13 小时前
[Linux]学习笔记系列 -- [fs][proc]
linux·笔记·学习
苦藤新鸡13 小时前
4.移动零
c++·算法·力扣
hetao173383713 小时前
2026-01-04~06 hetao1733837 的刷题笔记
c++·笔记·算法
拜托啦!狮子13 小时前
安装和使用Homer(linux)
linux·运维·服务器
liulilittle14 小时前
XDP VNP虚拟以太网关(章节:一)
linux·服务器·开发语言·网络·c++·通信·xdp
Sapphire~14 小时前
Linux-13 火狐浏览器书签丢失解决
linux
Ralph_Y14 小时前
多重继承与虚继承
开发语言·c++