Я новичок, поэтому, скорее всего, я что-то упустил.
Я использую std :: vector для хранения данных из операции ReadFile.
В настоящее время у меня есть структура READBUFF, которая содержит вектор байта. Затем создается экземпляр READBUFF через закрытый тип в классе с именем Reader.
class Reader{
public:
void Read();
typedef struct {
std::vector<byte> buffer;
} READBUFF;
private:
READBUFF readBuffer;
}
В Read () я в настоящее время изменяю размер массива до желаемого размера, так как распределитель по умолчанию создает действительно большой вектор [4292060576]
void Reader::Read()
{
readBuffer.buffer.resize(8192);
}
Это все работает нормально, но потом я решил, что предпочел бы динамически НОВЫЙ вектор, встроенный в вектор, поэтому я контролирую управление распределением указателя. Я изменил буфер на: std :: vector * buffer. Когда я пытаюсь сделать следующий буфер не установлен в новый буфер. Из отладчика ясно, что он не инициализирован.
void Reader::Read()
{
key.buffer = new std::vector<byte>(bufferSize);
}
Итак, я попытался, но это ведет себя так же, как указано выше.
void Reader::Read()
{
std::vector<byte> *pvector = new std::vector<byte>(8192);
key.buffer = pvector;
}
Главный первый вопрос: почему это не работает? Почему я не могу назначить указатель буфера действительным указателем? Кроме того, как мне определить размер встроенного выделения и необходимость изменения размера?
Моя конечная цель - «обновить» буферы и затем сохранить их в деке. Прямо сейчас я делаю это, чтобы повторно использовать вышеупомянутый буфер, но я по сути копирую буфер в другой новый буфер, когда все, что мне нужно, это сохранить указатель на исходный буфер, который был создан.
std::vector<byte> newBuffer(pKey->buffer);
pKey->ptrFileReader->getBuffer()->Enqueue(newBuffer);
Заранее спасибо. Когда я публикую это, я понимаю, что упустил что-то фундаментальное, но я в растерянности.