我遇到了一个问题。指针的值被修改,指针指向一个无法访问的地址。顺便说一句,指针的地址在堆上。 我想知道有没有办法在初始化之后将指针设置为只读,当有人试图改变指针的值时,进程将崩溃。
感谢。 杰瑞
答案 0 :(得分:2)
您可以使用valgrind来检测无效指针访问以及许多其他无效的内存使用情况。
答案 1 :(得分:0)
您可以使用mprotect
,但我建议不要修改堆页面,因为这些页面是我libc
管理的。
mprotect(page_aligned_address, len, PROT_READ);
如果您打算使用它,我建议您使用mmap
分配内存,以免弄乱您的堆。
答案 2 :(得分:0)
使用以下命令在Linux的终端窗口中生成映射文件:
gcc -o demo -Wl,-Map,demo.map demo.c
您可以轻松找到内存使用出错的位置或覆盖发生的位置。此映射文件将帮助您详细了解内存的每个部分。