zeiger, klassen und addrinfo



  • hallo,

    ich habe eine klasse mit diesem konstruktor.

    connection::connection(const string& host, const string& port, const addrinfo& hints)
    {
        // struct addrinfo** addrlist; ist in der klasse private deklariert.
        int err = getaddrinfo(host.c_str(), port.c_str(), &hints, addrlist);
        if (err != 0)
        {
            throw invalid_argument("getaddrinfo has returned: " + string(gai_strerror(err)) + " <" + host + ":" + port + ">");
        }
        if (addrlist == NULL)
        {
            cout << "addrlist == NULL" << endl;
        }
    
    }
    

    und rufe den konstruktor dann auf

    struct addrinfo hints; // suchkreterien
    memset(&hints, 0, sizeof(hints));
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_protocol = IPPROTO_TCP;
    
    connection* metager = new connection("www.metager.de", "80", hints);
    connection  fedora("fedoraproject.org", "80", hints);
    

    warum ist beim anlegen von metager addrlist == NULL
    und beim anlegen von fedora nicht mal vorhanden (speicherzugriffsfehler)?

    wie würde es funktionieren?

    thx



  • Probiers so:

    // struct addrinfo* addrlist; ist in der klasse private deklariert.
    int err = getaddrinfo(host.c_str(), port.c_str(), &hints, &addrlist);
    


  • vielen Dank simon.gysi

    super


Anmelden zum Antworten