簡體   English   中英

取消引用 char* 總是會產生分段錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM