将指针传递/复制到另一个指针

时间:2014-09-22 06:36:22

标签: c++ pointers

我有一个指针代码如下:

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_;但发生了同样的错误。如何删除此错误?

2 个答案:

答案 0 :(得分:2)

uptargetTXuptarget_未初始化,因此它们指向随机内存位置,因此访问会导致分段错误。根据您要执行的操作,您可能必须首先分配内存,例如:NsObject* uptargetTX = new NsObject

答案 1 :(得分:1)

我不知道你的代码是做什么的,但是这个

NsObject* uptarget_;
uptarget_->recv(ppp, (Handler*) 0); <- dereference the pointer

首先是错误的:你需要将指针初始化为之前有效的东西。

出于同样的原因,其余的也是错误的。