我想將& add1的值賦給一個變量。我嘗試了this answer,的建議,但它沒有給出我期望的結果。向UINTPTR_T投射功能的地址給了我不正確的結果
uintptr_t add1Address = reinterpret_cast<uintptr_t>(&add1);
在這一點上,add1Address等於11669784
,這是0x00B21118
但是我的調試器,(和檢查用HXD內存)告訴我,& ADD1 = 0x00B217C0
這裏發生的事情?
的完整代碼如下
#include "stdafx.h"
#include <iostream>
int add1(int num, int num2);
int add1(int num, int num2)
{
return num + num2;
}
int main(void)
{
uintptr_t add1Address = reinterpret_cast<uintptr_t>(&add1);
std::cout << std::hex << add1Address;
}
我所看到的在debugger這裏
你使用哪種編譯器? – geza
@geza visual studio,刪除了printf;使問題更清楚,不打印。 – JeffUK
「然而,我的調試器(用HxD檢查內存)告訴我......」 - 它究竟如何告訴你這一點?很可能你會跳到一些毫無根據的假設。正確的值確實是「0x00B21118」。 – AnT