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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值