title | description | ms.date | f1_keywords | helpviewer_keywords | ms.assetid | ||
---|---|---|---|---|---|---|---|
Compiler Warning (level 1) C4750 |
Describes MSVC compiler warning C4750 about a possible stack overflow. |
07/08/2020 |
|
|
b0b2c938-7d2a-4c36-8270-7daee15ffee3 |
'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.
-
Ensure that the 'identifier' function isn't modified with the
__forceinline
specifier. -
Ensure that the 'identifier' function doesn't contain a
_alloca
function that is contained in a loop. -
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;
}