Ошибка большого объекта

Проблема

Анализ останавливается во время компиляции с сообщением, указывающим, что объект является слишком большим.

Причина

Ошибка происходит, когда программное обеспечение обнаруживает объект, такой как массив, объединение, структура или класс, который является слишком большим для размера указателя выбранной цели.

Например, вы получаете сообщение, Limitation: struct or union is too large в следующем примере. Вы задаете размер указателя 16 битов. Максимальный размер объекта, выделенный указателю, и поэтому максимальный позволенный размер для объекта, могут составить 216-1 байт. Однако вы объявляете структуру можно следующим образом:

  • struct S 
    { 
      char tab[65536]; 
    }s; 
    
  • struct S 
    { 
      char tab[65534]; 
      int val;
    }s; 
    

Решение

  1. Проверяйте размер указателя, который вы задали через свой тип целевого процессора. Для получения дополнительной информации смотрите Target processor type (-target).

    Например, в следующем, размере указателя для пользовательского целевого My_target 16 битов.

  2. Измените свой код или задайте различный размер указателя.

    Например, вы можете:

    • Объявите массив меньшего размера в структуре.

      Если вы будете использовать предопределенный тип целевого процессора, размер указателя, вероятно, совпадет с размером указателя на вашей целевой архитектуре. Поэтому ваше объявление может вызвать ошибки на вашей целевой архитектуре.

    • Измените размер указателя типа целевого процессора, который вы задали, если это возможно.

      В противном случае задайте другой тип целевого процессора с большим размером указателя или задайте свой собственный тип целевого процессора. Для получения дополнительной информации об определении вашего собственного типа процессора смотрите Generic target options.

      Примечание

      Polyspace® накладывает внутреннее ограничение 128 Мбайт на размере структур данных. Даже если ваша спецификация типа целевого процессора позволяет структуры данных большего размера, этот внутренний предел ограничивает размеры структуры данных.