这是我用高级编程语言来获得自我的方式。操作变量的地址以存储较小的类型?
我有一个32位的值写入到缓冲器的功能,并且在堆栈上一个uint64_t
。下面的代码是一种理智的方式来存储它吗?
uint64_t size = 0;
// ...
getBytes((uint32_t*)&size+0x1);
我假定这将是规范的,安全的方式:
uint64_t size = 0;
// ...
uint32_t smallSize;
getBytes(&smallSize);
size = smallSize;
是否有你在堆栈中使用'uint64_t'而不是32位类型的原因? – 2010-06-07 21:08:34
@Justin Ethier,是的。有两种不同环境的代码路径。一个生成一个32位的值,另一个生成一个64位的值。使用64位变量可以使路径回到一起。 – s4y 2010-06-07 21:22:45
第二个例子确实是这样做的正确方法。 – caf 2010-06-08 01:26:53