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
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.
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
Feedback
https://aka.ms/ContentUserFeedback.
În curând: Pe parcursul anului 2024, vom elimina treptat Probleme legate de GitHub ca mecanism de feedback pentru conținut și îl vom înlocui cu un nou sistem de feedback. Pentru mai multe informații, consultați:Trimiteți și vizualizați feedback pentru