分享方式:


編譯器警告 (層級 1) C4750

' identifier ': 函式,內嵌至迴圈_alloca()

備註

' identifier ' 函式會在迴圈內強制內嵌擴充 _alloca 函式,這可能會在執行迴圈時造成堆疊溢位。

更正這個錯誤

  1. 請確定 ' identifier ' 函式未使用 __forceinline 規範修改。

  2. 請確定 ' identifier ' 函式不包含 _alloca 包含在迴圈中的函式。

  3. 請勿指定 /O1/O2/Ox/Og 編譯參數。

  4. 將函 _alloca 式放在 try-except 語句 ,以攔截堆疊溢位。

範例

下列程式碼範例會呼叫迴圈中的 MyFunction ,而 MyFunction 會呼叫 _alloca 函式。 __forceinline 修飾詞會造成 _alloca 函式的內嵌展開。

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

另請參閱

_alloca