我正在嘗試使用名稱空間和結構&遇到問題。編譯器如何爲此結構分配內存?
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,這可能與您的示例相同。 –