mmap으로 malloc구현하는것 질문입니다.
글쓴이: milkrookie / 작성시간: 화, 2013/11/19 - 10:31오후
제가 mmap으로 malloc을 구현을 했는데요.
더블링크리스트를 이용해서 구현을 했는데요 메타데이터로 사용된 구조체 내용은 대략 다음과 같습니다.
struct XXXX
{
....
void * prev;
void * next;
int data[1];
....
}
malloc을 할당할 때마다 prev와 next에 앞에랑 뒤에 있는 구조체주소값을 할당을 해줬는데요. 이상하게 malloc함수가 끝나면 prev와 next의 값이 사라집니다...
malloc함수가 정의된 함수내에서 printf를 이용해서 prev와 next값을 출력할 때는 제대로 값이 저장된거로 나오는데 이상하게 malloc함수가 끝나고 나중에 realloc등으로 접근을 해서 다시 prev와 next값을 출력해보면 값이 사라져서 링크를 타고 다른 메타데이터를 접근을 못합니다.
그리고 이상한건 data이부분이 실제 데이터를 저장하는 부분인데 malloc이 끝나고 나중에 그냥 행렬처럼 사용할 때는 제대로 동작을 합니다...
mmap에 사용된 파일은 mmap전에 ftruncate를 이용해서 파일크기를 지정해줬습니다.
혹시 mmap으로 할당한 메모리에서는 변수값이 자동으로 날라가는건가요??
Forums:
다시 출력해보니깐 이상하게 저 prev랑 next에
다시 출력해보니깐 이상하게 저 prev랑 next에 값을 넣기전에 정확한(?) 데이터가 미리 저장이 된 상태네요;;;
링크 연결전에 값이랑 연결 후에 값을 printf로 출력해보니 똑같네요.(근데 이 데이터가 맞는 데이터긴 합니다..)
질문을 바꾸면 아예 구조체 변수에 값을 저장을 못하는데 왜그럴까요;;ㅠㅠ
아 해결했네요;; 제가 포인터 사이즈를
아 해결했네요;;
제가 포인터 사이즈를 잘못입력한거였습니다..ㅠㅠ
댓글 달기