0

是否有人在 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 会破坏内存。

问候,杜桑·穆德里克。

4

1 回答 1

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;
}

如果您发布重现问题的完整代码示例,那么我们可能会提供更多帮助。

于 2012-07-12T18:15:18.707 回答