Replace malloc with new for LRU Cache Handle

This commit is contained in:
SherlockNoMad 2015-12-04 15:12:07 -08:00
parent a9ca9107b9
commit 3a98a7ae7f

View File

@ -74,7 +74,7 @@ struct LRUHandle {
void Free() { void Free() {
assert((refs == 1 && in_cache) || (refs == 0 && !in_cache)); assert((refs == 1 && in_cache) || (refs == 0 && !in_cache));
(*deleter)(key(), value); (*deleter)(key(), value);
free(this); delete[] reinterpret_cast<char*>(this);
} }
}; };
@ -390,8 +390,8 @@ Cache::Handle* LRUCache::Insert(
// Allocate the memory here outside of the mutex // Allocate the memory here outside of the mutex
// If the cache is full, we'll have to release it // If the cache is full, we'll have to release it
// It shouldn't happen very often though. // It shouldn't happen very often though.
LRUHandle* e = LRUHandle* e = reinterpret_cast<LRUHandle*>(
reinterpret_cast<LRUHandle*>(malloc(sizeof(LRUHandle) - 1 + key.size())); new char[sizeof(LRUHandle) - 1 + key.size()]);
autovector<LRUHandle*> last_reference_list; autovector<LRUHandle*> last_reference_list;
e->value = value; e->value = value;