포인터로 들어오는 값이 NULL 일 경우를 생각해서 예외처리 하는 습관을 가져야겠다.
변수명을 적절하게 직관적으로 잘 지어야 가독성은 둘째치고 구현을 할 때 헷갈리지 않는다.
내가 리뷰한 코드에서 아래와 같이 free를 먼저 해주고 다음에 해제된 메모리를 참조하려해서 segment fault 에러가 날 것 같았는데 에러가 안난다고 하셨다. 그 분 말로는 gpt가 이렇게 짜줬다고 했다.
if (curr->right == t->nil || curr->right == prev) {
free(curr);
top--;
prev = curr;
curr = t->nil;
이번주에 공부하면서 알게될 부분같다.
가상메모리는 never write-through 하고 write-back한다고 해서 그 둘이 무슨 차이인지 지피티에게 물어보았다.
Write-Through:
데이터가 업데이트될 때 메모리와 캐시 모두를 업데이트하는 방식입니다.
한 번에 메모리와 캐시를 동일하게 유지하기 때문에 일관성은 유지되지만, 성능은 저하될 수 있습니다.
Write-Back:
데이터가 업데이트될 때 캐시만 업데이트하고, 메모리는 나중에 업데이트하는 방식입니다.
빈번한 메모리 업데이트를 피하면서 캐시에서의 작업이 빠르게 이루어집니다. 하지만 메모리와 캐시 간의 불일치가 발생할 수 있습니다.
가상 메모리에서는 write-back 방식이 더 흔히 사용됩니다. 가상 메모리는 디스크 등의 보조 기억장치를 사용하므로, 메모리와 디스크 간의 데이터 전송 속도 차이를 줄이기 위해 캐시에서의 빠른 작업이 중요합니다. Write-back은 이러한 성능 향상을 위한 선택입니다.