9

Androidでこれら2つのセグメンテーション違反が見られます。1 つは SEGV_MAPERR と言い、もう 1 つは SEGV_ACCERR と言いました。

この2つの違いを教えてください。

signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 41963214

signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 4006e000

ありがとう。

4

2 に答える 2

1

のようなメモリにアクセスする*((int*)0)=1と、 が得られSEGV_MAPERRます。

mprotect(2)たとえば でメモリを保護した場合mprotect(buffer, pagesize, PROT_READ)、メモリを のよう*(buffer)=1に変更すると、 が得られSEGV_ACCERRます。

詳細をお願いman mprotectします。

于 2015-10-27T06:46:32.983 に答える