這是我用高級編程語言來獲得自我的方式。操作變量的地址以存儲較小的類型?
我有一個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