私は12バイトのmmapを使用して匿名のマッピングを作成しています(私が知っている小さな)
p = mmap(NULL,
12,
PROT_READ| PROT_WRITE,
MAP_ANONYMOUS | MAP_PRIVATE,
-1,
0);
次に、この12バイトを超えて書き込むことができるかどうかを確認したいと思います
p=p+13;
strcpy(p,str);
printf("String at p is %s\n", ((char *)p));
案の定、この領域の読み取りと書き込みは可能です。ポインタを20,000ずつ増やして、最大5ページを移動しようとしています。私のシステムのページサイズは4096です。sysconf(_SC_PAGESIZE)を使用してこれを見つけました。まだポインタの読み取りと書き込みができます
どうしたの?私は何か間違ったことをしていますか、それともまだ到達していないglibcの制限がありますか?
編集:確認するために、ある制限を超えることを超えてコードを失敗させたいのですが、その制限がどこにあるのかわかりません