u32 iterations = 5;
u32* ecx = (u32*)malloc(sizeof(u32) * iterations);
memset(ecx, 0xBAADF00D, sizeof(u32) * iterations);
printf("%.8X\n", ecx[0]);
ecx[0] = 0xBAADF00D;
printf("%.8X\n", ecx[0]);
free(ecx);
很简单,为什么我的输出如下?
0D0D0D0D
BAADF00D
附:
u32 是 unsigned int 的简单类型定义
edit:
- 使用 gcc 4.3.4 编译
- 包含 string.h
memset 的第二个参数类型为 int,但为确实是一个无符号字符 http://www.cplusplus.com/reference/clibrary/cstring/memset/。 0xBAADF00D转换为unsigned char(最低有效字节)是0x0D,因此memset用0x0D填充内存。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)