关于memcpy的疑问,请教。

[复制链接]
查看11 | 回复4 | 2012-8-25 13:13:55 | 显示全部楼层 |阅读模式
a和p都是堆栈上的变量,从内存分布来说,假定数组p占据了0x1000~0x1001的地址,数组a就占据了0x1004~0x100C的地址(由于4字节对齐)现在你把a向p复制,是把0x1004~0x100C第内容,复制到了0x1000~0x1008的位置,如下'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', '\0', 'f', 'g', 'h', '\0'所以数组p是abcdefgh而数组a的位置上变成了 efgh(这里有一个\0,虽然后面还有内容,但不显示了)...
回复

使用道具 举报

千问 | 2012-8-25 13:13:55 | 显示全部楼层
1.将a拷贝到p,越界占用了a的空间2. 是越界...
回复

使用道具 举报

千问 | 2012-8-25 13:13:55 | 显示全部楼层
a是pointer, sizeof(a)就是指针的大小,得sizeof(a[0]);...
回复

使用道具 举报

千问 | 2012-8-25 13:13:55 | 显示全部楼层
数组超界了 ,试试这个memcpy(p,a,sizeof(p));...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行