- 论坛徽章:
- 0
|
如下:
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <sys/mman.h>
int main()
{
char *p = NULL;
size_t len = 4 * 1024;
p = mmap(0, len, PROT_WRITE, MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS, -1, 0);
if (p != MAP_FAILED) {
sprintf(p, "%p: %s", p, "hello mmap");
puts(p);
if (munmap(p, len) != 0)
perror("munmap");
} else
perror("mmap");
return 0;
} |
$ gcc tst-mmap.c && ./a.out
(nil): hello mmap
$ uname -a
Linux laptop 2.6.26-2-amd64 #1 SMP Fri Mar 27 04:02:59 UTC 2009 x86_64 GNU/Linux
|
看到 bbs 上还是有很多人认为 NULL 指针(或其它野指针,道理上一样)指向的内存区为“系统保留的”或者“属于其它进程的”,因而不能被读写。
哈哈,其实 NULL 所指空间都可以访问了
[ 本帖最后由 windaoo 于 2009-7-17 02:11 编辑 ] |
|