在Microsoft Visual Studio 2010中使用sockaddr_storage时,是否有人遇到内存损坏?这是我遇到问题的代码:
class Base
{
public:
Base(){a=1};
int a;
sockaddr_storage addr;
int b;
};
class Derived1 : public Base
{
public:
Derived1() {a=2};
int c;
}
class Derived2 : public Derived1
{
public:
Derived2() {a=3;};
int d;
}
在Derived2构造函数中,对象中“a”的偏移量为4个字节,将“a”设置为3会破坏内存。
此致 Dusan Mudric。
答案 0 :(得分:0)
使用以下代码示例,我无法重现您的问题。
#include <iostream>
#include <WinSock2.h>
class Base
{
public:
Base(){a=1;}
int a;
sockaddr_storage addr;
int b;
};
class Derived1 : public Base
{
public:
Derived1() {a=2;};
int c;
};
class Derived2 : public Derived1
{
public:
Derived2() {a=3;};
int d;
};
int main( int argc, char **argv )
{
Derived2 d;
std::cout << d.a << std::endl;
return 0;
}
如果您发布了可以重现问题的完整代码示例,那么我们可能会提供更多帮助。