Use after free. Try something like this instead:

```c++
while (!QUEUE_EMPTY(&write_item_queue_)) {
  QUEUE* q = static_cast<QUEUE*>(QUEUE_HEAD(&write_item_queue_));
  QUEUE_REMOVE(q);
  WriteItem* wi = QUEUE_DATA(q, WriteItem, member_);
  wi->cb_(&wi->w_req_, status);
  delete wi;
}
```

Also lets you drop the call to QUEUE_INIT().