類似代碼:
typedef struct sD
{
}S_D;
int size_d = sizeof(S_D);
那么size_d=?
如果這是一段C++代碼,那么這里結(jié)果是1;看上去編譯器為這樣沒有成員的結(jié)構(gòu)體隱形定義了一個一字節(jié)(char)的成員,目的是為了能用來標(biāo)識類實(shí)例之間的不同。
這里可以這樣理解,如果沒有這一個字節(jié),那么所有結(jié)構(gòu)體的實(shí)例都是空,也就不占內(nèi)存,那么他們的實(shí)例是沒有區(qū)別的,因此C++的編譯器不允許這么做,從而隱式增加了一個字節(jié)。
另外對于class也是同樣的(因此C++中struct和class關(guān)鍵字基本沒有區(qū)別)。
那么如果這個代碼是C代碼,最后的size_d是多少?