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);
Run Code Online (Sandbox Code Playgroud)
非常简单地说,为什么我的输出如下?
0D0D0D0D
BAADF00D
Run Code Online (Sandbox Code Playgroud)
ps:u32是unsigned int的简单typedef
编辑:
Tad*_*mas 11
memset的第二个参数是int类型,但实际上是unsigned char.0xBAADF00D转换为无符号字符(最低有效字节)为0x0D,因此memset用0x0D填充内存.