mirror of
				https://github.com/ossrs/srs.git
				synced 2025-03-09 15:49:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			31 lines
		
	
	
	
		
			763 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
	
		
			763 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
| g++ mmap0.cpp -g -O0 -o mmap && ./mmap
 | |
| */
 | |
| #include <stdio.h>
 | |
| #include <assert.h>
 | |
| #include <sys/mman.h>
 | |
| #include <string.h>
 | |
| 
 | |
| int main(int argc, char** argv)
 | |
| {
 | |
|     int zero_fd = -1;
 | |
|     int size = 64 * 1024;
 | |
|     int mmap_flags = MAP_PRIVATE | MAP_ANON;
 | |
|     char* vaddr = (char*)mmap(NULL, size, PROT_READ | PROT_WRITE, mmap_flags, zero_fd, 0);
 | |
|     assert (vaddr != (void *)MAP_FAILED);
 | |
|     printf("vaddr=%p, size=%d\n", vaddr, size);
 | |
| 
 | |
|     vaddr[0] = 0x0f;
 | |
|     printf("OK: access vaddr p[0]=%x\n", vaddr[0]);
 | |
| 
 | |
|     int REDZONE = 4096;
 | |
|     mprotect(vaddr, REDZONE, PROT_NONE);
 | |
|     printf("protect vaddr=%p, [0, %d]\n", vaddr, REDZONE);
 | |
| 
 | |
|     printf("try to access vaddr\n");
 | |
|     vaddr[0] = 0x0f;
 | |
|     printf("OK: access vaddr p[0]=%x\n", vaddr[0]);
 | |
| 
 | |
|     return 0;
 | |
| }
 | |
| 
 |