2017-03-01 4 views
-5

Ich bin ein Laufzeitfehler für den folgenden Code erhalten:Laufzeitfehler für C++ Code (basierend auf Zeiger)

#include <iostream> 
using namespace std; 
struct a 
{ 
    int i; 
}*b; 

int main() { 
    b->i = 1; 
    a* c = new a(*b); 
    cout << c->i; 
    return 0; 
} 

Kann jemand geben Sie mir den Grund für den Fehler?

Antwort

1

Sie versuchen, auf das Element i eines nicht initialisierten Zeigers zuzugreifen.

Sie müssen Speicher zuweisen für b:

b = new a(); 
b->i = 1; 
a* c= new a(*b); 
cout << c->i; 
delete b; 
delete c; 

Live Demo