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 (...) {
// 异常处理
}