0
如果我有一個函數foo(),並且我想使用VirtualProtectEx()來更改函數foo()中變量的屬性 。 VirtualDrotectEx(GetCurrentProcess(),p,sizeof(DWORD),PAGE_READONLY,& old);設置PAGE_READONLY(使用VirtualprotectEx())時,它如何成爲訪問衝突?
當我設置「PAGE_READONLY」並編譯它時,按摩將顯示訪問衝突。
如果我設置「PAGE_READWRITE」,它將成功執行。
有什麼問題?
char a [10]; void * p =&a; a是函數中的變量,p是指向 地址的指針。 所以我想問我是否想要更改變量a的屬性, 如何將其設置爲READONLY並且不會訪問衝突或我無法更改它,因爲它會影響整個頁面而不僅僅是變量 感謝 – user1021319
是的,一個'仍然分配在堆棧中,而不是在堆中。 **出於任何原因**如果您使堆棧爲只讀,您的程序將無法繼續執行。因此,在堆中分配這個。使用'char * p =(char *)malloc(sizeof(char [10]))' – JosephH
謝謝,我知道了 – user1021319