假设我有此数组:当我将uint8_t数组转换为uint32_t时会发生什么?
uint8_t arr[10];
位于地址0x00
。
然后我想将它的一部分分配给uint32_t的值。 arr [1],arr [2],arr [3]和arr [4]的聚合为32位整数。这里有一个例子:
uint8_t arr[10];
uint32_t i;
i = *((uint32_t *)&arr[1]);
让我困扰的是,arr[1]
位于地址而不是多个四(在地址0x01)。所以问题是:在32位平台上会发生什么?这是否合法,是否与标准uint32
作业相比有一些缺点?
行为是不确定之间进行切换;任何事情都可能发生,包括'程序崩溃'和'程序似乎工作'。 –
@bolov失败,thx –