SNU-ARC / 2024_spring_sysprog_Lab3

8 stars 0 forks source link

ls.dmas 관련 질문 #27

Open alchan00 opened 2 months ago

alchan00 commented 2 months ago
제목 없음

ls.dmas 에서 r 171줄은 171은 오류가 뜨는것이 맞는건가요? 제가 이해하기로는 r ~ size할때 ~는 allocated block일때만 잘 구현하면 되어서 171번째 블록이 아직 없으니 오류가 뜨는게 맞는것 같은데 다른 의도가 있는건지 궁금합니다.

추가로 -v시 sentinal의 출력도 채점에 들어가는지 궁금합니다. 이전 이슈 답변에 이곳에 무엇이 적던지, 사용하지 않던지는 자유라고 하는 걸 본것 같아서요

kwonsw055 commented 2 months ago

r 에서 invalid한 id를 사용하는 경우 mm_realloc(NULL, size)를 호출하는 것과 같습니다. 정상적인 operation이며, 오류는 발생하지 않아야 합니다.

sentinel은 #1 에 말씀드린 대로, 사용하셔도, 사용 안 하셔도 됩니다.

alchan00 commented 2 months ago

답변 감사합니다. 하나만 더 여쭤보겠습니다 ㅠ realloc에서 malloc(size)를 return 하면 위와같은 오류가 생기고 malloc(size)를 실행한 뒤 null을 return 하면 오류가 안나는게 맞는건가요? 그런데 이랬을때는 위 상황에서 f 171 을 실행하면 오류가 납니다. r 171 336이 171 invalid id 일때는 m 171 336과 똑같을거같은데 그러면 f171 시 지워지는게 정상적이겠죠? 뭐가문제일까요 ㅠㅠ block쪽 코드를 볼수없어 헷갈리네요

kwonsw055 commented 2 months ago

현 상황에서는 r 171 336 대신에 m 171 336을 호출하더라도 결과는 같아야 합니다. 따라서 malloc이 성공할 수 있는 상황이라면 null을 반환해서는 안됩니다.

테스트케이스를 축소해가며 오류가 발생하는 최소한의 테스트케이스를 찾아내고, mm_test를 realloc이 가능하도록 수정하셔서 mm_test로 테스트 해보시는 것이 좋을 듯 싶습니다.

추가로 mm_driver의 mode를 debug로 설정해 디버깅 해보시는 것도 좋을 것 같습니다. 코드에서 DEBUG Flag를 활성화하는 방법은 #12 를 확인해보시기 바랍니다.