Если вы хотите вручную управлять временем жизни памяти, вам нужно использовать динамическое выделение памяти. Нединамически выделенная память (статически распределенная) будет освобождена только тогда, когда память выходит из области видимости. Поскольку эта память находится в объекте, которым вы управляете, эта память выходит из области видимости только тогда, когда объект-владелец освобожден.
Таким образом, вам нужно будет динамически распределять буфер при создании, затем при изменении размера выделять новый буфер, копировать содержимое из старого буфера в новый буфер, удалять старый буфер, а затем назначать внутренний указатель вашего объекта новому буферу. Что-то вроде:
// allocate a new, bigger array
Cell* newBuff = new Cells[/*newSize*/];
// copy into the new array
for (i = 0; i < myBufferSize; ++i)
{
newBuff[i] = myBuffer[i];
}
// delete the old array
delete myBuffer;
// point to the new array
myBuffer = newBuff;
Не могли бы вы основать свою хеш-таблицу на std::vector
вместо использования ручного выделения памяти? Это будет обрабатывать динамический массив для вас, и вы можете изменить размер с помощью простого .resize
:
myBuffer.resize(/*newSize*/)