Класс Qt QImage
имеет две версии его bits()
функция, которая возвращает указатель на данные базового изображения. Один const, другой нет. Вот документация для неконстантной версии:
Возвращает указатель на данные первого пикселя. Это эквивалентно
Scanline (0).Обратите внимание, что QImage использует неявный обмен данными. Эта функция выполняет
глубокая копия данных общего пикселя, таким образом гарантируя, что этот QImage
единственный, использующий текущее возвращаемое значение.
Тип возврата uchar*
,
Означает ли это, что я отвечаю за звонок delete
на этот указатель, когда я закончу с ним, чтобы избежать утечки памяти?
Нет, это просто означает, что неконстантная версия заставляет QImage отсоединяться от любых других экземпляров, которые используют одни и те же данные, так как вы можете изменить их. Это все еще поддерживает собственность. Просто чтобы быть уверенным, реализация (из Qt 4.7.2):
uchar *QImage::bits()
{
if (!d)
return 0;
detach();
// In case detach ran out of memory...
if (!d)
return 0;
return d->data;
}
Других решений пока нет …