Compiler Warning (level 1) C4750
'identifier': function with _alloca() inlined into a loop
Keterangan
Fungsi 'pengidentifikasi' memaksa perluasan _alloca
fungsi sebaris dalam perulangan, yang dapat menyebabkan luapan tumpukan ketika perulangan dijalankan.
Untuk memperbaiki kesalahan ini
Pastikan bahwa fungsi 'pengidentifikasi' tidak dimodifikasi dengan penentu
__forceinline
.Pastikan bahwa fungsi 'pengidentifikasi' tidak berisi
_alloca
fungsi yang terkandung dalam perulangan.Tempatkan
_alloca
fungsi dalam pernyataan try-except yang akan menangkap luapan tumpukan.
Contoh
Contoh kode berikut memanggil MyFunction
dalam perulangan, dan MyFunction
memanggil _alloca
fungsi . Pengubah __forceinline
menyebabkan perluasan _alloca
fungsi sebaris.
// 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;
}