peakzhang 发表于 2007-12-19 21:23:50

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构造时有一个拷贝的过程. 就是在这里有问题.
是不是我的用法有问题啊.

peakzhang 发表于 2007-12-19 21:23:56

想问一下到底是我的用法有问题, 还是这本身是ACE的一个小BUG. 大家用ACE和BoundChecker的时候有没有遇到类似情况?

另外就是我的程序还发现很多稀奇古怪的发生在ACE库内部的内存泄漏, 还不知道原因, 头大中, 等有线索再来问大家.

peakzhang 发表于 2007-12-19 21:24:01

你看到的所谓的内存泄漏,绝大部分其实不是,或者说不能这么认为。ACE_InputCDR就是这么设计的。
页: [1]
查看完整版本: ACE_InputCDR的问题