C语言中内存重叠问题.docxVIP

  • 9
  • 0
  • 约2.36千字
  • 约 4页
  • 2020-12-14 发布于河北
  • 举报
v1.0可编辑可修改 v1.0可编辑可修改 PAGE PAGE # 内存重叠:拷贝的目的地址在源地址范围内。所谓内存重叠就是拷贝的目的地址和源地址 有重叠。 在函数strcpy和函数memcpy都没有对内存重叠做处理的, 使用这两个函数的时候只有程序 员自己保证源地址和目标地址不重叠,或者使用 memm ov函数进行内存拷贝。 memmovei数对内存重叠做了处理。 现在来看函数strcpy 原型:exter n char *strcpy(char *dest,char *source); 功能:把source所指由NULL结束的字符串复制到 dest所指的数组中。 说明:source和dest所指内存区域不可以重叠且 dest必须有足够的空间来容纳 source的 字符串。 返回指向dest的指针。 重叠从两方面考虑: (1).dest 数据覆盖了 source;女口: dest(8byte) 地址:1000 source(8byte) 地址:1002 ⑵.dest 所指的区域本来就是 source的一部分; 女口: dest(8byte) 地址:1000 source(8byte)地址:0998 例如:针对第一种交叉情况情况, dstsrc且dst+countsrc , memcpy和memmov的结果是 一样的。请看下面的例子讲解: string s = hello

文档评论(0)

1亿VIP精品文档

相关文档