mprotect()로 메모리 영역을 보호 한 후 처음으로 malloc()을 호출 할 때 세그먼트 화 오류가 발생합니다. 이 메모리 할당에게 보호를 수행하는 코드 스니 플릿입니다 :mproct 후 malloc 세그먼트 화 오류 발생
#define PAGESIZE 4096
void* paalloc(int size){ // Allocates and aligns memory
int type_size = sizeof(double);
void* p;
p = malloc(type_size*size+PAGESIZE-1);
p = (void*)(((long) p + PAGESIZE-1) & ~(PAGESIZE-1));
return p;
}
void aprotect(int size, void* array){ // Protects memory after values are set
int type_size = sizeof(double);
if (mprotect(array, type_size*size, PROT_READ)) {
perror("Couldn't mprotect");
}
}
내 배열로 쓰는 것을 방지하기 위해 mprotect가를 사용하려면 (있는 사인/코사인 값을 미리 계산). 이것은 어리석은 생각입니까?
cast (void *) mallac ....도 입력하십시오. – Vijay
@john : 캐스트가 필요하지 않습니다. – Wernsey
이 게시물을 편집하기에 충분하지 않지만이 질문을 찾는 사람은 이 : http://stackoverflow.com/questions/1686464/alternatives-to-mprotect 페이지 정렬에 관한 Caf의 대답은 죽었습니다. 오늘 뜨거운 주제 인 것 같습니다 :) –