一 memcpy缺陷分析
1.memcpy原型:
#include <string.h>
void *memcpy(void *dest, const void *src, size_t n); #函数返回dest指针
2.缺陷分析:
(1)memcpy容易发生缓冲区溢出,如果dest长度小于待拷贝的字节数n,那么程序将发生缓冲区溢出;
(2)如果dest是高地址,src是低地址,拷贝可能发生错误,即源地址和目的地址重合部分在拷贝时被修改。

综上所述:memcpy参数较为简单,没有对程序安全性做进一步限制,将导致某些致命错误。
二 safe_memcpy
1.原型:
bool safe_memcpy(void *dst, const void *src, size_t len, const void *start, const void *end);
// dst指向目的地址
// src指向源地址
// len是待拷贝的字节数
// start指向目的地址开始地址
// end指向目的地址结束地址 即最后一个元素的后一个地址
2.实现分析:
safe_memcpy.hpp
#pragma once
#include <stdint.h>
#include <string.h>
static inl

本文详细分析了标准库函数memcpy的潜在风险,如缓冲区溢出和地址重叠问题。随后,介绍了safe_memcpy的实现,旨在增强内存操作的安全性,通过指定拷贝范围避免错误。通过实例演示,展示了如何使用safe_memcpy来确保程序健壮性。
最低0.47元/天 解锁文章
399





