int* work(int** pointer, int offset)
{
return *pointer + (offset/sizeof(int));
}
int main()
{
int** pointer = (int**) 0x4df73c;
int offset = 0xf4;
int* healthLowestPointer = work(pointer, offset);
while(true) {
*healthLowestPointer = 1000;
Sleep(250);
}
}
版本:
int* work(int* pointer, int offset)
{
return (int*) (*pointer + (offset/sizeof(int)));
}
int main()
{
int* pointer = (int*) 0x4df73c;
int offset = 0xf4;
int* healthLowestPointer = work(pointer, offset);
while(true) {
*healthLowestPointer = 1000;
Sleep(250);
}
}
1個工作正常,但第2版沒有按」似乎。我不明白爲什麼版本2被破壞。是不是取消引用一個雙層指針與解引用一個單層指針相同的東西,即它抓取指針包含的內存地址的值?
我該如何編寫一個函數,它將n級指針作爲輸入,並通過n-1次解引用n級指針返回1級指針?
這兩個版本是UB。 – 2013-04-27 19:44:16
晚安SO,今天沒有更多這些問題.../OFF – 2013-04-27 19:44:59
@Armin:我不確定你的意思。版本1是一致的並始終有效。 – user2327287 2013-04-27 19:45:11