포인터를 세트 x의 일부 또는 세트 y의 일부로 태그 지정하는 방법이 필요합니다 (즉, 태그에 2 개의 '상태'만 있음). 즉, 태그없는 것으로 가정 할 수 있음 = x와 tagged = y. 태그 지정/인코딩 포인터
은 현재 내가이 일을 비트 XOR을 사용하여 찾고 있어요 :ptr^magic = encoded_ptr
encoded_ptr^magic = ptr
하지만 포인터가 처음에 태그가 있는지 확인하는 방법에 난처한 해요. 링크 된 목록에서 어떤 풀 노드가 왔는지 표시하려면 이것을 사용하고 있습니다. 따라서 해당 식별자가 탈락되면 올바른 쪽으로 되돌아 갈 수 있습니다.
업데이트
그냥 내가 sizeof(void*)
에 제한있어 여분의 데이터 멤버에 플래그를 저장하기 위해 제안 모든 사람들에게 그것을 명확하게하기 위해, 그래서 새 멤버를 추가 할 수 없습니다, 다른 나는 것 . 또한 풀은 연속적이지 않으며 많은 페이지로 구성됩니다. 범위를 추적하면 너무 많은 오버 헤드가 추가됩니다 (번 & 간단한 해결책 인 경우이를 호출 할 수 있음).
포인터와 함께 저장된 외부 'bool' 플래그를 사용하지 않는 이유는 무엇입니까? –