제 질문은 이상한 크기의 메모리 덩어리를 가리키는 것입니다.특정 비트 크기의 C++ 포인터
의 난과 같이 선언 struct
있다고 가정 해 봅시다 :
typedef struct{
int32 val1 : 29;
int32 val2 : 26;
char val3;
}MyStruct;
이 구조체으로 바람직하다에서의 특정 비트 필드를 선언 가정하자 (우리는 비트 필드를 사용하십시오 왜 질문하지 않습니다). 이 아닌 비트 필드의 주소를 복용 오류 "을 생산하는 것을 제외하고
MyStruct test;
int32 *myPtr = &(test.val1);
: 그 필드 중 하나를 가리키는 포인터를 선언하고 싶었다면
, 나는 이런 식으로 뭔가를 시도 할 수 있습니다 허용 ".
우리가 원한다고 가정 할 때,이 방법으로 필드를 가리키는 방법이 있습니까? 나는 C++이 필드를 다음 바이트 (이 경우에는 32 비트)에 채울 것임을 알고있다.
포인터는 "포인트"를 바이트로 사용하기 때문에 "정상"바이트가 아닐 수도있는 주소를 저장할 방법이 없으므로이 동작이 정상적인 것으로 예상됩니다. – ereOn
비트 크기가 지정된 비트 필드 멤버에 대해 패딩이 표시되지 않는다고 생각합니다 (또는 적어도 구현을 정의하지는 않습니다). – RichieHindle
@RichieHindle : 사실, 대부분의 작은 값에 대해서는, 비트 필드가 발명 된 이유이기 때문에 패딩이 없습니다. – PlasmaHH