51Testing软件测试论坛
标题:
cppunit_tear down/setup使用问题
[打印本页]
作者:
lesley
时间:
2006-3-29 16:20
标题:
cppunit_tear down/setup使用问题
为啥在tear downfree函数时,测试结果会是error,详细信息为
tearDown() failed- uncaught exception of unknown type
void httpserver::setUp()
{
char *original=(char *)malloc(100);
memset(original,0,100);
}
void httpserver::tearDown()
{
free(original);
original=NULL;
}
难道不可兼容c的函数的代码编译又没有出错,为啥呀
[
本帖最后由 lesley 于 2006-3-29 16:24 编辑
]
作者:
zixuxuwu
时间:
2006-3-29 19:52
就楼主留的代码来看,估计编译也会有问题的吧。original是个局部变量。出了setup函数就不起作用了。也就是说在setup函数中,会有内存泄露,而在teardown函数中会不认识original。不过你编译没出错,检查一下是不是整个程序中还有original的同名变量。
作者:
lesley
时间:
2006-3-30 10:43
是因为这个原因吗??
class httpserver: public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE( httpserver );
CPPUNIT_TEST( ATest);
CPPUNIT_TEST_SUITE_END();
protected:
char *original;
char *tmp;
char *terminal;
public:
void setUp ();
void tearDown();
void ATest();
};
是这样申明的 那如果要声请一个动态内存 不在setup里那setup不是初始化吗 ,不可以这样用吗?请版主指教
作者:
VisualUnit
时间:
2006-3-30 11:36
void httpserver::setUp()
{
char *original=(char *)malloc(100);
memset(original,0,100);
}
这里重新声明了char *original
这个originalf现在是局部变量。
你把char *删掉就可以了,变成:
void httpserver::setUp()
{
original=(char *)malloc(100);
memset(original,0,100);
}
作者:
zixuxuwu
时间:
2006-3-30 20:02
VisualUnit已经指出问题了,相信你已经改过了,现在应该没有问题了吧?你在setup中给局部变量original分配了空间,在teardown中释放的是类的成员变量original的空间,但是由于你没有给类的成员变量original分配空间,所以释放的时候就出了你看见的那个错误。
[
本帖最后由 zixuxuwu 于 2006-3-30 20:07 编辑
]
作者:
lesley
时间:
2006-3-31 17:11
太感谢了!基础不好 还在学习中,谢谢版主和viusal unit
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2