# V574. Pointer is used both as an array and as a pointer to single object.

The analyzer detected a potential error: a variable is used simultaneously as a pointer to a single object and as an array.

Let's study a sample of the error the analyzer has found in itself:

    TypeInfo *factArgumentsTypeInfo =
      new (GC_QuickAlloc) TypeInfo[factArgumentsCount];
    for (size_t i = 0; i != factArgumentsCount; ++i)
    {
      Typeof(factArguments[i], factArgumentsTypeInfo[i]);
      factArgumentsTypeInfo->Normalize();
    }

It is suspicious that we handle the factArgumentsTypeInfo variable as the "factArgumentsTypeInfo[i]" array and as a pointer to the single object "factArgumentsTypeInfo ->". Actually we should call the Normalize() function for all the items. This is the fixed code:

    TypeInfo *factArgumentsTypeInfo =
      new (GC_QuickAlloc) TypeInfo[factArgumentsCount];
    for (size_t i = 0; i != factArgumentsCount; ++i)
    {
      Typeof(factArguments[i], factArgumentsTypeInfo[i]);
      factArgumentsTypeInfo[i].Normalize();
    }

This diagnostic is classified as:

CWE-823 CERT-EXP08-C

You can look at examples of errors detected by the V574 diagnostic.