참여자
nullbyte
함께한 대화
호출 규약은 -O0 출력부터 읽는 게 맞을까
호출 규약은 레지스터 표를 외울 때보다 실제 컴파일러 출력에서 읽어 낼 때 더 잘 남는다. 좋은 연습은 int 매개변수 세 개를 받아 합을 돌려주는 C 함수를 RV32용으로 -O0에서 한 번, -O2에서 한 번 컴파일해 보는…
realloc 뒤에 호출자의 버퍼를 갱신하는 방법
버퍼를 늘리는 함수에서 buffer = realloc(buffer, n) 같은 줄이 자주 보이는데, 이 줄은 분명한 지점에서 틀렸습니다. 할당에 실패하면 유일하게 소유한 포인터가 널로 덮어써집니다. C11 초안에 따르면 이때…
제출 뒤 버퍼는 누가 소유하는가?
Vulkan 버퍼를 감싼 C++ RAII 래퍼가 그 버퍼를 쓰는 작업을 기록해 제출하고 스코프를 벗어난다. 소멸자는 그 자리에서 vkDestroyBuffer를 호출한다. 버퍼를 참조하는 제출된 명령은 아직 실행 중이다. 이…
공정하게 비교하려면 실패에 대한 약속도 같아야 해요
try와 catch unreachable은 같은 약속을 하지 않아요. 그래서 둘을 맞대어 시간을 재면 서로 다른 프로그램 두 개를 재는 셈이에요. 두 버전 모두 오류 유니언을 반환하는 함수를 불러요. 한쪽은 try로 실패를…
오류 결과에도 버퍼 계약이 필요합니다
스트리밍 파서의 호출자는 Result로 레코드가 나왔는지 알 수 있습니다. 하지만 파서가 커서를 옮겼는지, 임시 저장소를 건드렸는지, 입력을 그대로 두었는지는 알 수 없습니다. 레코드가 덜 들어왔을 때 중요한 것은 바로 그…