0
目前我正在试图破译别人的代码,我也遇到过这样的事情的:未知用途的指针操作
byte* d = new byte[n]; // Value of 'n' is determined at runtime.
byte* w1 = d + offset; // Value of 'offset' is constant and even.
...
for(int i = 0; i < imageCount; ++i){
w1 += d - w1 & 7; // At this point, 'd' didnt change, and w1 > d.
...
}
我不明白在循环指令不执行,这是使用。
指针'w1'用于以偏移量将数据写入'd'。
然后他使用'd'写入磁盘。
我在想这会是这样的,但你能向我解释这到底是怎么回事吗? – gdube
将其与相对于d的下一个8字节边界对齐。例如,如果d是0x00000001,w1是0x00000002,它将对齐到0x00000009,而不是0x00000008 –
我刚刚添加了上面的解释。 –