이름 공간과 구조체를 사용하려고 시도했습니다. &에 문제가 발생했습니다.컴파일러는 어떻게이 구조체에 메모리를 할당합니까?
C++
#include<iostream>
using namespace std;
namespace One
{
struct Data
{
int val;
char character;
};
}
namespace Two
{
struct Data
{
int val;
bool boolean;
};
}
void functionOne(void)
{
using namespace One;
cout << "functionOne()" << endl;
cout << "The size of struct Data : ";
cout << sizeof(Data) << endl;
}
void functionTwo(void)
{
using namespace Two;
cout << "functionTwo()" << endl;
cout << "The size of struct Data : ";
cout << sizeof(Data) << endl;
}
int main()
{
functionOne();
functionTwo();
}
Output
functionOne()
The size of struct Data : 8
functionTwo()
The size of struct Data : 8
동안 나는 다음에 '네임 스페이스의 두'의 코드를 변경할 때 :
namespace Two
{
struct Data
{
char val;
bool boolean;
};
}
Output :
functionOne()
The size of struct Data : 8
functionTwo()
The size of struct Data : 2
내가 컴파일러는 구조체에 메모리를 할당하는 방법을 알아낼 수 없습니다입니다. 미리 감사드립니다.
@CarlNorum 링크의 대답은 32 비트 아키텍처에 대해 설명합니다. 정렬이 (일반적으로) 64 비트 아키텍처에서 수행되었음을 알 수 있습니까? –
어떤 종류의 문제입니까? –
@mozart, 아마도 귀하의 예와 같습니다. –