设置超出程序中断的内存不会出现段错误

时间:2019-02-21 23:10:51

标签: c macos memory-management heap-memory sbrk

我试图了解有关如何真正混淆的内存管理(mmap,brk,sbrk)的更多信息:

    char *ptr = sbrk(0);
    char *ptr2 = ptr + 100000;
    *ptr2 = 8;
    printf("%d\n", *ptr2);

不触发分段错误吗?我正在OS X Mojave上用clang编译它。

sbrk()的手册页上说已经过时,但也说sbrk()应该可靠地返回程序中断。如果是这样,并且pagesize为4096字节,那么是否不应该为超出程序中断100000个空格的地址设置值会触发段错误?如果它不能可靠地返回程序中断(不能,如果可以为超出其地址的地址设置值呢?),那么如何在Mac OS上可靠地找到程序中断?

完全相同的代码在Ubuntu 18.10上产生了段错误。

谢谢!

0 个答案:

没有答案