Share via


Derleyici Uyarısı (düzey 1) C4750

'identifier': döngüye _alloca() ile birlikte işlev

Açıklamalar

'identifier' işlevi, döngü içinde işlevin satır içi genişlemesini _alloca zorlar ve bu da döngü yürütülürken yığın taşmasına neden olabilir.

Bu hatayı düzeltmek için

  1. 'identifier' işlevinin tanımlayıcıyla __forceinline değiştirilmediğinden emin olun.

  2. 'identifier' işlevinin döngüde yer alan bir _alloca işlev içermediğinden emin olun.

  3. , , /O2/Oxveya /Og derleme anahtarını belirtmeyin/O1.

  4. İşlevi _alloca yığın taşması yakalayacak bir try-except deyimine yerleştirin.

Örnek

Aşağıdaki kod örneği döngüde çağrısı MyFunction yapar ve MyFunction işlevini çağırır _alloca . Değiştirici işlevin __forceinline satır içi genişlemesine _alloca neden olur.

// 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;
}

Ayrıca bkz.

_alloca