An apparatus comprising: memory allocation circuitry to allocate a memory region in memory; and bounded pointer generation circuitry to generate bounded pointers comprising at least a revocable bounded pointer (340, 600) for use in accessing the memory region, the revocable bounded pointer providing a pointer value and range information (350, 355) identifying an address range of the memory region; wherein the memory allocation circuitry is arranged to provide, at a header location in the memory, a header for the memory region, the header having a first token field whose stored value is initialised to a first token value associated with the memory region, the header location being derivable from the range information provided by the revocable bounded pointer, and wherein the memory allocation circuitry is responsive to a subsequent deallocation of the memory region to modify the stored value in the first token field of the header; and whereby in response to a request to generate a memory address using the revocable bounded pointer, a use authentication check is arranged to prevent generation of the memory address when it is determined that the stored value in the first token field has been changed, wherein: the use authentication check is arranged to invalidate the revocable bounded pointer when it is determined that the stored value in the first token field has been changed; the revocable bounded pointer is arranged to store the first token value; and in response to the request to generate a memory address using the revocable bounded pointer, the use authentication check is arranged to employ the range information to determine the header location, and to invalidate the revocable bounded pointer in the absence of a match between the first token value stored in the revocable bounded pointer and the stored value in the first token field of the header. memory allocation circuitry to allocate a memory region in memory; and bounded pointer generation circuitry to generate bounded pointers comprising at least a revocable bounded pointer (340, 600) for use in accessing the memory region, the revocable bounded pointer providing a pointer value and range information (350, 355) identifying an address range of the memory region; wherein the memory allocation circuitry is arranged to provide, at a header location in the memory, a header for the memory region, the header having a first token field whose stored value is initialised to a first token value associated with the memory region, the header location being derivable from the range information provided by the revocable bounded pointer, and wherein the memory allocation circuitry is responsive to a subsequent deallocation of the memory region to modify the stored value in the first token field of the header; and whereby in response to a request to generate a memory address using the revocable bounded pointer, a use authentication check is arranged to prevent generation of the memory address when it is determined that the stored value in the first token field has been changed, wherein: the use authentication check is arranged to invalidate the revocable bounded pointer when it is determined that the stored value in the first token field has been changed; the revocable bounded pointer is arranged to store the first token value; and in response to the request to generate a memory address using the revocable bounded pointer, the use authentication check is arranged to employ the range information to determine the header location, and to invalidate the revocable bounded pointer in the absence of a match between the first token value stored in the revocable bounded pointer and the stored value in the first token field of the header. the use authentication check is arranged to invalidate the revocable bounded pointer when it is determined that the stored value in the first token field has been changed; the revocable bounded pointer is arranged to store the first token value; and in response to the request to generate a memory address using the revocable bounded pointer, the use authentication check is arranged to employ the range information to determine the header location, and to invalidate the revocable bounded pointer in the absence of a match between the first token value stored in the revocable bounded pointer and the stored value in the first token field of the header.