2017-03-01 33 views
-5

我得到一個運行時錯誤輸入以下代碼:運行時錯誤(基於指針)

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

誰能給我一個錯誤的原因是什麼?

回答

1

您正試圖訪問未初始化指針的i成員。

您需要爲b分配內存:

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

Live Demo