Анализатор обнаружил потенциально возможную ошибку, связанную с тем, переменная используется одновременно как указатель на один объект и как массив.
Рассмотрим пример ошибки, которую анализатор нашёл сам в себе:
TypeInfo *factArgumentsTypeInfo = new (GC_QuickAlloc) TypeInfo[factArgumentsCount]; for (size_t i = 0; i != factArgumentsCount; ++i) { Typeof(factArguments[i], factArgumentsTypeInfo[i]); factArgumentsTypeInfo->Normalize(); }
Подозрительно, что с переменной factArgumentsTypeInfo мы работаем как с массивом "factArgumentsTypeInfo[i]" и как с указателем на один объект "factArgumentsTypeInfo ->". На самом деле необходимо вызвать функцию Normalize() для всех элементов. Исправленный вариант кода:
TypeInfo *factArgumentsTypeInfo = new (GC_QuickAlloc) TypeInfo[factArgumentsCount]; for (size_t i = 0; i != factArgumentsCount; ++i) { Typeof(factArguments[i], factArgumentsTypeInfo[i]); factArgumentsTypeInfo[i].Normalize(); }
Данная диагностика классифицируется как:
|
Взгляните на примеры ошибок, обнаруженных с помощью диагностики V574. |