Skip to content

Latest commit

 

History

History
55 lines (39 loc) · 1.99 KB

compiler-warning-level-1-c4750.md

File metadata and controls

55 lines (39 loc) · 1.99 KB
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
C4750
C4750
b0b2c938-7d2a-4c36-8270-7daee15ffee3

Compiler Warning (level 1) C4750

'identifier': function with _alloca() inlined into a loop

Remarks

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

  1. Ensure that the 'identifier' function isn't modified with the __forceinline specifier.

  2. Ensure that the 'identifier' function doesn't contain a _alloca function that is contained in a loop.

  3. Don't specify the /O1, /O2, /Ox, or /Og compilation switch.

  4. Place the _alloca function in a try-except statement that will catch a stack overflow.

Example

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

See also

_alloca