Ostrzeżenie kompilatora (poziom 4) C4764
Nie można wyrównać obiektów catch do większej niż 16 bajtów
Określono wyrównanie większe niż 16, ale na niektórych platformach, jeśli funkcja zgłasza wyjątek, stos wymusi wyrównanie nie większe niż 16.
Przykład
Poniższy przykład generuje C4764:
// C4764.cpp
// compile with: /W4 /EHsc
// processor: x64 IPF
#include <stdio.h>
class A
{
public:
int x;
};
typedef __declspec(align(32)) A ALIGNEDA;
int main()
{
ALIGNEDA a;
try
{
a.x = 15;
throw a;
}
catch (ALIGNEDA b) // can't align b to > 16 bytes
{
printf_s("%d\n", b.x);
}
} // C4764