c – gcc/linux:CppuTest使用静态向量显示内存泄漏,误报?
在xxxx.h文件中:
在xxxx.cpp中
这些向量在静态回调函数中处理,因此它们也必须是静态的. 在cpputest中,当尝试在这些向量中的任何一个中添加某些内容时,会发生故障:
添加到向量中的东西是自动变量,它发生在正常函数中:
在测试用例结束时清除向量:
(yyyy()返回指向单例xxxx对象的指针) 第http://blog.objectmentor.com/articles/2010/02/04/cpputest-recent-experiences页
所以我的问题是: br Esko 最佳答案
你和valgrind签过了吗?它会将“绝对丢失”的泄漏内存与“仍可访问”的内存区分开来.如果它是误报,它应该仍然可以访问(通过向量中的指针).
请记住,vector :: clear()只是破坏元素,它不会释放任何内存,因此capacity()将保持不变. 您可以执行交换技巧以强制向量释放其内存:
这会创建一个临时(空)向量并将其与向量交换,因此向量的元素和已分配的内存将被转移到临时值,然后在语句结束时被销毁. 附:单身者很糟糕,不要使用它们,但是如果它是静态成员,你为什么要像yyyy() – > dninstList(即使用operator->)那样访问向量?您可以说xxxx :: dninstList或使其成为非静态成员并通过单例对象访问它(但不要忘记单身人员吮吸.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |