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

// 异常处理

}

相关推荐
Linux技术芯1 小时前
#Linux内存管理# 详细介绍madvise函数的工作原理
linux
Hey! Hey!1 小时前
在 Ubuntu 22.04 上运行 cAdvisor 时遇到 mountpoint for cpu not found 错误
linux·运维·ubuntu
渡我白衣2 小时前
Linux网络编程:基于UDP 的聊天室雏形
linux·网络·udp
gnawkhhkwang3 小时前
io_getevents 和 io_pgetevents 系统调用及示例
linux·c语言·开发语言
朱小弟cs63 小时前
Orange的运维学习日记--23.Linux计划任务详解
linux·运维·学习
小白不想白a3 小时前
【MySQL】MySQL的安全风险与安装安全风险
linux·数据库·mysql·安全
渡我白衣3 小时前
Linux网络编程:UDP 的echo server
linux·网络·udp
R-G-B4 小时前
【08】C++实战篇——C++ 生成动态库.dll 及 C++调用DLL,及实际项目中的使用技巧
c++·c++ 生成动态库.dll·c++ 生成静态库.lib·c++调用动态库.dll·c++调用静态库.lib·c++调用dll·c++调用lib
大大大大肉包5 小时前
linux中挂载磁盘和卸载
linux·运维·服务器
朝朝又沐沐5 小时前
算法竞赛阶段二-数据结构(40)数据结构栈的STL
开发语言·数据结构·c++·算法