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

// 异常处理

}

相关推荐
ysa05103011 小时前
动态规划-逆向
c++·笔记·算法
燃于AC之乐11 小时前
我的算法修炼之路--7—— 手撕多重背包、贪心+差分,DFS,从数学建模到路径DP
c++·算法·数学建模·深度优先·动态规划(多重背包)·贪心 + 差分
闻缺陷则喜何志丹11 小时前
【BFS 动态规划】P12382 [蓝桥杯 2023 省 Python B] 树上选点|普及+
c++·蓝桥杯·动态规划·宽度优先·洛谷
小天源11 小时前
linux漏洞一键扫描
linux·运维·服务器·漏洞扫描
码农水水12 小时前
中国邮政Java面试被问:容器镜像的多阶段构建和优化
java·linux·开发语言·数据库·mysql·面试·php
福楠12 小时前
C++ STL | map、multimap
c语言·开发语言·数据结构·c++·算法
wifi chicken12 小时前
Linux Wlan L3~L2封包逻辑详解
linux·网络·ping·封包
Sarvartha12 小时前
二分查找学习笔记
数据结构·c++·算法
daidaidaiyu13 小时前
一文入门 Android NDK 开发
c++
Ethernet_Comm13 小时前
从 C 转向 C++ 的过程
c语言·开发语言·c++