ACE_Message_Block长度的问题?
ACE_Message_Block *mb = NULL;ACE_NEW_RETURN(mb, ACE_Message_Block(n), -1);
ACE_OS::sprintf(mb->wr_ptr(),"%s",buffer);
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%t) Request_Handler:%s)\n"),
mb->rd_ptr()));
程序段的意思是把buffer放到mb中,如果buffer的内容"hello"但是输出的时候mb中除了"hello"外,还有一堆乱码,为什么除了"hello"外,还有其他别的内容 你自己没清空缓冲区,也没加\0结束符,当然如此! ACE_OS::sprintf自己会自动加上‘\0’, 原因就出在你传入的buffer上面,所以先检查你传入的buffer内容赋值。
页:
[1]