클래스 멤버 인 포인터에 alignas
을 사용하려하고 솔직하게 말해서 어디에 넣어야하는지 잘 모르겠습니다. 예컨대alignas 구문으로 고민
: I가 PTR가 64 바이트 정렬 된 블록의 데이터를 보장하기를 희망
class A
{
private:
int n;
alignas(64) double* ptr;
public:
A(const int num) : n(num), ptr(new double[num])
{}
};
. 인텔 컴파일러를 사용하면 그렇지 않습니다.
누구나 올바른 방향으로 나를 가리킬 수 있습니까?
[저를 위해 일하는 것 같습니다] (http://rextester.com/LCVUW98273) ('A'의 크기가 지나치게 큽니다). 아니면 데이터'ptr'가 **에 **를 가리키고있는 것이 ** over-aligned이 되길 바랬습니까? 그것은 인과 관계의 위반을 요구할 것입니다. –
컴파일러가 64의 정렬을 지원하지 않을 수 있습니까? – Brian
감사의 뜻 과실, 그것은 나의 오해의 근원을 보여주고 있습니다. 포인터가 가리키는 데이터가 아니라 포인터가 정렬됩니다. 데이터 블록이 정렬되기를 기대하고있었습니다. – user1683586