[英]dereferencing a char* always gives segmentation fault
我正在嘗試在 memory 地址上 go 並查看連續 memory 區域的不同可訪問性,這些區域是:只讀、讀寫和不可訪問。 我還有一個信號處理程序來處理分段錯誤,以便程序可以繼續運行。
char* currentAdd;
char readBuf;
for (unsigned int i = 0; i < 0xffffffff, i+=PAGE_SIZE){
currentAdd = (char*)i;
jmpVar = sigsetjmp(env,1); // don't worry about this, it's handled properly
if(jmpVar == 0){
currentMode = MEM_RO;
readBuf = *currentAdd; // always a segmentation fault
// it can never try writing!!
currentMode = MEM_RW;
*currentAdd = readBuf;
}
else{
...
}
}
我的程序永遠不會過去 (readBuf = *currentAdd;),這有時是預期的,但並非總是如此。 我做錯什么了嗎?
我試圖從 i=1 開始,以防止某些人提出的建議,但它仍然不斷給我分段錯誤。
那么你從 i = 0 開始你的循環,然后在地址 i 處給 currentAdd 一個字符的地址,所以 currentAdd 基本上是 (void*)0,也就是 NULL,所以你在尊重 NULL,沒有計算機真的像那樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.