Compartir a través de


Advertencia del compilador (nivel 1) C4750

"identifier": función con _alloca() insertada en un bucle

Comentarios

La función "identifier" fuerza la expansión insertada de la función _alloca dentro de un bucle, lo que podría producir un desbordamiento de pila cuando se ejecute el bucle.

Para corregir este error

  1. Asegúrese de que la función "identifier" no se modifica con el especificador __forceinline.

  2. Asegúrese de que la función "identifier" no contiene una función _alloca que está contenida en un bucle.

  3. No especifique el modificador de compilación /O1, /O2, /Ox o /Og.

  4. Coloque la función _alloca en una instrucción try-except que descubrirá un desbordamiento de pila.

Ejemplo

El siguiente ejemplo de código llama a MyFunction en un bucle y MyFunction llama a la función _alloca . El modificador __forceinline hace que la expansión inline de la función _alloca .

// c4750.cpp
// compile with: /O2 /W1 /c
#include <intrin.h>

char * volatile newstr;

__forceinline void myFunction(void) // C4750 warning
{
// The _alloca function does not require a __try/__except
// block because the example uses compiler option /c.
    newstr = (char * volatile) _alloca(1000);
}

int main(void)
{
    for (int i=0; i<50000; i++)
       myFunction();
    return 0;
}

Consulte también

_alloca