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

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐