С момента обновления структуры GTEST от 1.8.x до 1.12.x было несколько тестов, в которых сообщалось о утечках памяти в конце теста. < /p>
Я лишил все Сложность наших настройки к примеру ниже и проверила его на старой структуре и новой. Этот образец не показывает утечки памяти в старом, теперь он. Похоже, это вызвано функциональным вызовом, сделанным на макете, для которого нет явного ожидания. br /> Макет в нашем исходном коде была статической vared_ptr, но делая его членом класса или переменной стека в тесте, не исправляйте проблему. < /p>
Совместное распределение, по-видимому, является экземпляром Underdered_map внутри 'uninterestingCallReactionMap ()' in gmock-spec-builders.cc < /p>
using namespace testing;
class IFoo
{
public:
IFoo() = default;
virtual ~IFoo() = default;
virtual bool closeLink(void) = 0;
};
class MockFoo : public IFoo
{
public:
MOCK_METHOD0(closeLink, bool());
};
class MemLeakReproTest : public Test
{
};
TEST_F(MemLeakReproTest, TestStuff)
{
MockFoo mockFoo;
//EXPECT_CALL(mockFoo, closeLink()).Times(1).WillOnce(Return(true));
mockFoo.closeLink();
}
< /code>
Изменить: добавлено в ответ на вопрос о том, как мы обнаруживаем утечки. Запуск в Windows).
Наша настройка в основной правильной? < /p>
{
// Enable leak checking on exit
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
// Write CRT warnings to stderr
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
wchar_t filename[MAX_PATH] = {};
wcscpy_s(filename, *wargv);
wcscat_s(filename, L".memleaks");
hLogFile = CreateFile(filename, GENERIC_WRITE,
FILE_SHARE_READ, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL, NULL);
_CrtSetReportHook(reportHook);
_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);
testing::InitGoogleTest(&argc, argv);
int result = RUN_ALL_TESTS();
LocalFree(wargv);
return result;
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... nce-update
Gmock утечет память на «неинтересные вызовы функций», так как обновление ⇐ C++
Программы на C++. Форум разработчиков
1738156292
Anonymous
С момента обновления структуры GTEST от 1.8.x до 1.12.x было несколько тестов, в которых сообщалось о утечках памяти в конце теста. < /p>
Я лишил все Сложность наших настройки к примеру ниже и проверила его на старой структуре и новой. Этот образец не показывает утечки памяти в старом, теперь он. Похоже, это вызвано функциональным вызовом, сделанным на макете, для которого нет явного ожидания. br /> Макет в нашем исходном коде была статической vared_ptr, но делая его членом класса или переменной стека в тесте, не исправляйте проблему. < /p>
Совместное распределение, по-видимому, является экземпляром Underdered_map внутри 'uninterestingCallReactionMap ()' in gmock-spec-builders.cc < /p>
using namespace testing;
class IFoo
{
public:
IFoo() = default;
virtual ~IFoo() = default;
virtual bool closeLink(void) = 0;
};
class MockFoo : public IFoo
{
public:
MOCK_METHOD0(closeLink, bool());
};
class MemLeakReproTest : public Test
{
};
TEST_F(MemLeakReproTest, TestStuff)
{
MockFoo mockFoo;
//EXPECT_CALL(mockFoo, closeLink()).Times(1).WillOnce(Return(true));
mockFoo.closeLink();
}
< /code>
Изменить: добавлено в ответ на вопрос о том, как мы обнаруживаем утечки. Запуск в Windows).
Наша настройка в основной правильной? < /p>
{
// Enable leak checking on exit
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
// Write CRT warnings to stderr
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
wchar_t filename[MAX_PATH] = {};
wcscpy_s(filename, *wargv);
wcscat_s(filename, L".memleaks");
hLogFile = CreateFile(filename, GENERIC_WRITE,
FILE_SHARE_READ, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL, NULL);
_CrtSetReportHook(reportHook);
_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);
testing::InitGoogleTest(&argc, argv);
int result = RUN_ALL_TESTS();
LocalFree(wargv);
return result;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79396566/gmock-leaks-memory-on-uninteresting-mock-function-calls-since-update[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия