template<typename T>
bool ShmWriter<T>::RemoveIndex(size_t index, size_t key_size) {
- auto* ptr = (ps::HandleMappingData*)index_mapper_.GetPtr();
+ auto* ptr = reinterpret_cast<ps::HandleMappingData*>(index_mapper_.GetPtr());
size_t handle_size = GetHandleSize();
free_space_.emplace(ptr[index].len, ptr[index].index);
index_mapper_.GetSize() - sizeof(ps::HandleMappingData));
config_handler_.SetIndexMemSize(index_mapper_.GetSize());
+ // Resize may change real ptr
+ ptr = reinterpret_cast<ps::HandleMappingData*>(index_mapper_.GetPtr());
for (size_t i = index; i < GetHandleSize(); ++i)
ptr[i].key_index -= key_size;
}
config_handler_.SetKeyMemSize(key_mapper_.GetSize());
+ // Resize may change real ptr
ptr = reinterpret_cast<char*>(key_mapper_.GetPtr());
if (moved_num > 0)
memmove((void*)(ptr + index + key_size), (void*)(ptr + index), moved_num);