Я использую библиотеку OSG для чтения файлов OSGB, но когда один файл превышает 200 МБ, будет выдано исключение. Как я могу решить эту проблему?
Размер файла не является точным, предполагается, что он вызовет исключение, если он превысит 200M. Тип исключения: std :: bad_allo c.
Я уверен, что не ошибаюсь при отладке и выпуске, потому что нет проблем при чтении небольших файлов.
Версия OSG 3.6.4
try
{
osg::ref_ptr<osg::Node> page = osgDB::readNodeFile("file.osgb"));
}
catch (const std::bad_alloc&)
{
return -1;
}
После тестирования см. Исходный код в InputStream. cpp, строка 816
if ( reader )
{
std::stringstream inputStream;
inputStream.write( data, size );
osgDB::ReaderWriter::ReadResult rr = reader->readImage( inputStream );
if ( rr.validImage() )
image = rr.takeImage();
else
{
OSG_WARN << "InputStream::readImage(): "
<< rr.statusMessage() << std::endl;
}
}
Я обнаружил, что размер " переменная size "- 119160141. Выглядит ненормально большим, но файл OSGB - только 200M