Как устранить ошибку C6011 с динамически размещенным массивом структур - PullRequest
0 голосов
/ 08 мая 2019

У нас есть выделенный в куче массив пользовательских структур, на который указывает локальный указатель. Указатель на массив проверяется на nullptr. Однако во время моего цикла VC ++ жалуется, что первой попыткой использования индексированной записи в массиве является «Разыменование нулевого указателя« ppi »».

Думаю, у меня тут тупой момент, но, похоже, нет никакого способа удовлетворить предупреждение 6011 ... как мне исправить этот сценарий?

Я включил несколько фрагментов кода, чтобы кратко проиллюстрировать этот код.

// Previously, SystemInfoObject.PeripheralPortInfo is heap-alloc'd to contain 
// multiple PeripheralInfo structures, and 
// SystemInfoObject.PeripheralPortInfoCount is adjusted to the number 
// of elements.

PeripheralInfo *ppi = nullptr;

ppi = SystemInfoObject.PeripheralPortInfo; // Set our local pointer

if (ppi != nullptr)
{
   for (int i = 0; i < SystemInfoObject.PeripheralPortInfoCount; i++)
   {

      if (_tcsncmp(ppi[i].PortName, _T("\\\\"), 2) == 0) // C6011
      {
          // Some code
      }
   }
}

1 Ответ

0 голосов
/ 08 мая 2019

Visual Studio запускается снова, я не видел условия цикла, которое требовало определенного кода позже для изменения указателя ppi, и нулевое условие никогда не проверялось повторно на последующих итерациях цикла.

Хотел бы я удалить мой вопрос! Все готово!

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