假設我有一個int值指針,其值爲0x5。我想爲該值添加一個0x3的偏移量。如果我想對指針進行常規算術(不是指針算術),我應該使用uintptr_t嗎?
我應該做這樣的(方法A):
int* pointer = 0x5;
int offset = 0x3;
pointer = pointer + (offset/sizeof(int)); // pointer is now equal to 0x8
或類似這樣的(方法B):
uintptr_t pointer = 0x5;
pointer = pointer + 0x3;
int* ptr = (int*) pointer; // pointer is now equal to 0x8
我問這個看到這個問題後:What is uintptr_t data type
我被告知不要使用常規整數並假裝它們是指針。
您也可以強制轉換爲char *'並添加3:它會得到相同的結果。 – dasblinkenlight
通常,你不應該對指針進行常規算術。你能解釋你實際想要達到的目標嗎? (另外,你的第一個例子是不正確的。) – pburka
@pburka:我正在寫一個低級的DLL,它將被注入一個目標進程來修改它的內存。偏移量是從基地址計算某些值的地址。 – user2899050