ИМХО не надо илобретать велосипед. Для этого в стандартных С-шных библиотеках придуманы malloc, realloc и free. Я бы начал с того, что проверил, нормально ли они реализованы в либах Вашего компилера. Если не повезло, и они "косые", написал бы что-то самодельное, аналогично устроенные.