Bagikan melalui


Compiler Warning (level 4) C4764

Tidak dapat meratakan objek tangkapan ke lebih dari 16 byte

Penyelarasan yang lebih besar dari 16 ditentukan, tetapi pada beberapa platform, jika fungsi melemparkan pengecualian, tumpukan akan memaksa penyelarasan tidak lebih besar dari 16.

Contoh

Sampel berikut menghasilkan 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