Hallo,
ich werd leider nicht mehr schlau daraus.
Ich hab folgende Klassen Konstellation:
class xplObject
{
...
};
class xplSocket : public xplObject
{
...
// Attributes
protected:
xplSimpleSocket m_socket;
long m_lSocketEventMask;
// Recv Buffer
xplBuffer m_buf;
DWORD m_dwReceived;
typedef std::vector CSocketTransferVector;
typedef std::map CSocketTransferMap;
CSocketTransferVector m_vecTransfers;
CSocketTransferMap m_mapTransfers;
xplCriticalSection m_csTransfers;
xplSocketTransfer m_recvTransfer;
// Status
bool m_bConnected;
SOCKETTYPE m_typeSocket;
};
class CSampleSocket : public xplSocket
{
...
// Keine weiteren Variablen
};
Wenn ich nun in xplSocket::xplSocket ein sizeof(xplSocket) bekomme ich 0xC8
zurueck.
Wenn ich sizeof(CSampleSocket) bekomm ich (nur) 0xC0 zurueck.
Nach meinem Verstaendnis von C++ sollte doch eine abgeleitetes Klasse
mindestens groesser sein als ihre Basisklassen! Aber genau das scheint in
diesem Fall nicht zu passen.
Diese Problem fuehrt im weiteren Programm dazu, dass der selbe Speicher fuer
zwei Variablen verwendet wird und dann das Programm sich verabschiedet.
Kennt jemand dieses Phaenomen? Woran kann das liegen?
Vielleicht ein Bug im Compiler (SuSE 9.3, GCC 3.3.5, AMD64)?
Vielen Dank fuer eure Hilfe,
Andreas