peakzhang 发表于 2008-7-13 23:13:05

ACE_Message_Block存放指针的问题

为什么使用ACE_MESSAGE_BLOCK的COPY方法来压入一个指针,内容会变,但是直接用构造函数的方式就没问题,如下的代码段一是正确的,而二就不行,指针的内容变掉了,导致使用的时候失败
一、
ACE_Message_Block * mb_blk_call = NULL;
ACE_NEW(mb_blk_call,ACE_Message_Block((const char *)(this)));
二、
ACE_NEW_NORETURN (this->recv_data_, ACE_Message_Block (sizeof(PacketHeader), MB_NORMAL_PACKET));
this->recv_data_->copy ((const char *)(this)));

peakzhang 发表于 2008-7-13 23:13:12

改为

void* p = (void*)this;

this->recv_data_->copy ((const char *)&p));

独来读网 发表于 2012-6-29 14:31:09

我问一下,放入指针的话,在ACE_Message_Block调用release或 delete ACE_Message_Block*时,里面的指针指向区域的内存是否会回收?

nettoobad 发表于 2013-2-11 23:49:11

回答三楼的问题:当然不会释放啊。
页: [1]
查看完整版本: ACE_Message_Block存放指针的问题