Udostępnij za pośrednictwem


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