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 // for std::copy_n

try {
    std::copy_n(pIn + nOffset, m_ColorLineByte, pLine->ppBuf[i]);
} catch (...) {
    // 异常处理
}

你可能感兴趣的:(C++,linux,c++)