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
'identifier' işlevinin tanımlayıcıyla
__forceinline
değiştirilmediğinden emin olun.'identifier' işlevinin döngüde yer alan bir
_alloca
işlev içermediğinden emin olun.İş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;
}