ACE_InputCDR的问题
代码片断如下.ACE_InputCDR is(mb); // mb是一个消息块
char * str;
is >> str;
cout << "Read data : " << str << "\n";
delete [] str;
本来运行起来没什么问题. 后来用BoundChecker检查一下内存问题. 发现在这一句:
ACE_InputCDR is(mb);
有内存错误, 具体是memcpy()的第二个参数为无效指针0x00000000
我DEBUG进去看了一下, 的确如此. ACE_InputCDR 构造时的start_成员初始化时没有分配
内存, 在用给定的ACE_Message_Block构造时有一个拷贝的过程. 就是在这里有问题.
是不是我的用法有问题啊. 想问一下到底是我的用法有问题, 还是这本身是ACE的一个小BUG. 大家用ACE和BoundChecker的时候有没有遇到类似情况?
另外就是我的程序还发现很多稀奇古怪的发生在ACE库内部的内存泄漏, 还不知道原因, 头大中, 等有线索再来问大家. 你看到的所谓的内存泄漏,绝大部分其实不是,或者说不能这么认为。ACE_InputCDR就是这么设计的。
页:
[1]