ну, есть несколько способов сделать это, но
Вы должны использовать функцию realloc в c ++. он перераспределяет непрерывную память, а также копирует значение предыдущей памяти в новые. например:
temp_DevInfo = (DeviceInfo*) realloc (m_DeviceInfo, (2) * sizeof(struct DeviceInfo));
free(m_DeviceInfo);
m_deviceInfo = temp_DevInfo;
вы делаете 2 * sizeof (DeviceInfo), потому что вы хотите добавить еще 2, плюс предыдущие 4 - 6.
тогда вы должны освободить / удалить предыдущий объект.
и, наконец, установите старый указатель так, чтобы он указывал на только что выделенный объект.
это должно быть суть
посмотрите документацию по realloc.