我有一个指针代码如下:
class NsObject : public TclObject, public Handler {
public:
NsObject();
virtual ~NsObject();
virtual void recv(Packet*, Handler* callback = 0) = 0;
virtual void recv(Packet* p, const char* s);
}
NsObject* uptargetTX;
NsObject* uptarget_;
void NsObject::recv(Packet *p, const char*)
{
Packet::free(p);
}
if (NodeType_ == TX) {
uptarget_->recv(ppp, (Handler*) 0);
*uptargetTX = *uptarget_; //in this line error happens
}
我希望使用uptarget_
将指针uptargetTX
传递/复制到*uptargetTX = *uptarget_;
,但出现问题
segmentation fault (core dumped)
然后我改为uptargetTX = uptarget_;
但发生了同样的错误。如何删除此错误?
答案 0 :(得分:2)
uptargetTX
和uptarget_
未初始化,因此它们指向随机内存位置,因此访问会导致分段错误。根据您要执行的操作,您可能必须首先分配内存,例如:NsObject* uptargetTX = new NsObject
答案 1 :(得分:1)
我不知道你的代码是做什么的,但是这个
NsObject* uptarget_;
uptarget_->recv(ppp, (Handler*) 0); <- dereference the pointer
首先是错误的:你需要将指针初始化为之前有效的东西。
出于同样的原因,其余的也是错误的。