- 论坛徽章:
- 0
|
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define PAGE_SHIFT 12
- #define PAGE_SIZE (1u<<PAGE_SHIFT)
- #define PAGE_MASK ~(PAGE_SIZE-1)
- void test_page(char *pg_start)
- {
- memset(pg_start, 'A', PAGE_SIZE-1);
- *(pg_start+PAGE_SIZE-1) = '\0';
- printf("strlen(pg_start) = %u \n", strlen(pg_start));
- return;
- }
- int main()
- {
- char *p;
- char bak[PAGE_SIZE];
- unsigned pg_start;
- p = malloc(1);
- pg_start = (unsigned)p&PAGE_MASK;
- memcpy(bak, (char*)pg_start, PAGE_SIZE);
- test_page((char *)pg_start);
- memcpy((char*)pg_start, bak, PAGE_SIZE);
- free(p);
- return 0;
- }
复制代码 linux X86 32位机下故计应该跑不出段错误吧!跑出来的请报告! |
|