Upozornění kompilátoru (úroveň 1) C4750
'identifier': funkce s _alloca() vloženou do smyčky
Poznámky
Funkce identifikátor vynutí vložené rozšíření _alloca
funkce ve smyčce, což může způsobit přetečení zásobníku při spuštění smyčky.
Oprava této chyby
Ujistěte se, že se funkce identifikátoru neupravuje se specifikátorem
__forceinline
.Ujistěte se, že funkce identifier neobsahuje
_alloca
funkci obsaženou ve smyčce.Nezadávejte
/O1
přepínač ,/O2
,/Ox
ani/Og
kompilační přepínač._alloca
Funkci umístěte do příkazu try-except, který zachytí přetečení zásobníku.
Příklad
Následující příklad kódu volání MyFunction
ve smyčce a MyFunction
volá _alloca
funkci. __forceinline
Modifikátor způsobí vložené rozšíření _alloca
funkce.
// 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;
}