我浪费了很多时间来解决这个问题,但没有成功。首先,我的配置:Ubuntu 16.04.1,qmake 3.0,cmake 3.5.1,共享gtest和gmock库,版本1.8.0。我使用Qt Creator,这是导致迷恋的最小程序的一个小例子。
main.cpp中:
class SomeModel extends Model
{
public $some_attribute = 'some value';
// ...
google_test.pro:
#include <iostream>
#include <gtest/gtest.h>
#include <gmock/gmock.h>
using namespace std;
class A {
void print() {
std::cout << "PRINT" << std::endl;
}
};
class B: public A {
MOCK_METHOD0(print, void());
};
TEST(MOCK, TEST) {
B b;
}
int main(int argc, char *argv[])
{
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
测试没问题,但在程序结束时我收到此错误:
*`/ home / aminought / QtProjects / build-google_test-Desktop_Qt_5_7_0_GCC_64bit-Debug / google_test'出错:双重免费或损坏(!prev):0x0000000001a51270 *
如何解决此错误?非常烦人。
答案 0 :(得分:1)
只有将google test编译为共享库才会出现此问题。我不知道为什么,但简单地将共享库替换为静态可以解决问题。
答案 1 :(得分:0)
已经发布了几年了。 我无法重现您遇到的确切问题, 但最近我遇到了相同的错误消息, 另一种情况。
问题是,我故意重写了 TearDown(),释放灯具类的受保护成员, 这导致了两次释放指针。看起来 googletest跟踪分配的内存并尝试 自动释放所有内容,即使我的TearDown() 覆盖以前已经做过的。删除已解决的替代 我的问题。
我希望将来对某人有用。
就我而言,动态链接没有任何作用。