Compiler Warning (level 1) C4750
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at Compiler Warning (level 1) C4750.
identifier': function with _alloca() inlined into a loop
The 'identifier' function forces inline expansion of the _alloca function within a loop, which might cause a stack overflow when the loop is executed.
To correct this error
Ensure that the 'identifier' function is not modified with the __forceinline specifier.
Ensure that the 'identifier' function does not contain a _alloca function that is contained in a loop.
Do not specify the /O1, /O2, /Ox, or /Og compilation switch.
Place the _alloca function in a try-except statement that will catch a stack overflow.
The following code example calls MyFunction in a loop, and MyFunction calls the _alloca function. The __forceinline modifier causes the inline expansion of the _alloca function.
// 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;
}