Как освободить память из QByteArray и QByte Stream в QT - PullRequest
5 голосов
/ 09 августа 2011

Я хочу знать, как я могу связать QByteArray и QByteStream из QT specialy с этим фрагментом кода:

  QByteArray DicResourceByteArray;
  QDataStream out(&DicResourceByteArray, QIODevice::WriteOnly);

  QString encoded;
  out.writeRawData(DicBlock.data + pos, DicBlock.length - pos);


  encoded = QString(DicResourceByteArray.toBase64());

Ответы [ 2 ]

5 голосов
/ 09 августа 2011

Все будут выпущены автоматически, как только они выйдут за пределы области действия в соответствии с концепцией RAII . Если вы хотите явно освободить память, вызовите что-то вроде clear(), но в этом нет необходимости - вся очистка будет выполняться в деструкторе QByteArray. С QDataStream ситуация такая же ... Также обратите внимание, что это очень предпочтительный стиль кодирования - когда вы будете создавать свои собственные классы, попробуйте сделать то же самое. Это избавляет от головной боли благодаря управлению C-подобными указателями.

1 голос
/ 09 августа 2011

Память, хранящаяся в QByteArray, автоматически освобождается, когда объект выходит из области видимости. QDataStream - это просто способ доступа к QByteArray, поэтому он не имеет собственных данных (он может использовать некоторые буферы для внутренних целей, но вам не нужно управлять ими) Вы можете использовать clear () для очистки содержимого QByteArray. Вы также можете использовать reserve () и resize () для настройки использования памяти, но они не должны понадобиться большую часть времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...