當結構成員指向另一個結構時,出現分段錯誤。詳細地說,我的新結構指向另一個結構的結構指針成員導致分段錯誤(C/C++)
typedef struct _sock_t{
ir_socket_t *_socket;
bool flag;
extern_class obj;
double *vect;
};
,同時我想指出的結構ir_socket_t socket;
。在main()
,如果我做類似
_sock_t *_sock ;
_sock->_socket = &socket;
然後我得到分段錯誤。然而,
_sock_t _sock ;
_sock._socket = &socket;
工作正常。第一種方法出了什麼問題?
P.S.請注意0是C而不是C++結構。
UPDATE: 如果我還考慮一個C++類對象作爲新的結構部件,然後我仍然獲得分段錯誤在
int n(4);
_sock->obj.resize(4); // here segmentation fault
而沒有與後一種方法沒有問題(沒有指針)。即使我做_sock_t *_sock = (_sock_t *)malloc(sizeof(_sock_t));
也會發生這種情況;使用@Bathshebba答案。
請問有什麼問題?
請注意_sock->vect= new double[n]
工作正常。
還要注意,_sock = new _sock_t;
工作得很好。
你還沒有初始化'_sock'。 – juanchopanza
'_sock_t * _sock'。在繼續進行C編程之前,您最好了解指針。這是一個沒有創意的指針,當然你不能解除引用。 – kaylum
變量'_sock'未初始化爲指向有效(正確分配)的內存塊。 –