ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

c – 在Windows上使用Google Test时内存泄漏

2019-07-29 11:16:15  阅读:269  来源: 互联网

标签:c windows memory-leaks googletest


当我运行以下代码时:

#include "gmock/gmock.h"
#include "gtest/gtest.h"

#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>

int main(int argc, char **argv) 
{
    ::testing::InitGoogleTest(&argc, argv);
    _CrtDumpMemoryLeaks();
    return 0;
}

我得到以下输出:

Detected memory leaks!
Dumping objects ->
{652} normal block at 0x00074CE0, 4 bytes long.
 Data: < L  > 98 4C 07 00 
{651} normal block at 0x00074C98, 12 bytes long.
 Data: <,           > 2C 03 1B 01 00 00 00 00 00 00 00 00 
{650} normal block at 0x00074C50, 8 bytes long.
 Data: <hI      > 68 49 07 00 00 00 00 00 
{649} normal block at 0x00074C10, 4 bytes long.
 Data: <t   > 74 03 1B 01 
{648} normal block at 0x00074BC8, 8 bytes long.
 Data: <xK      > 78 4B 07 00 00 00 00 00 
{647} normal block at 0x00074B70, 28 bytes long.
 Data: <         K   L  > BC 01 1B 01 01 CD CD CD C8 4B 07 00 E0 4C 07 00 
{646} normal block at 0x00074B28, 8 bytes long.
 Data: < I      > 18 49 07 00 00 00 00 00 
{645} normal block at 0x00074AE0, 8 bytes long.
 Data: < I      > 04 49 07 00 00 00 00 00 
{644} normal block at 0x00074A98, 8 bytes long.
 Data: < H      > DC 48 07 00 00 00 00 00 
{643} normal block at 0x00074A50, 8 bytes long.
 Data: < H      > C8 48 07 00 00 00 00 00 
{642} normal block at 0x00074A08, 8 bytes long.
 Data: < H      > B4 48 07 00 00 00 00 00 
{641} normal block at 0x000749C0, 8 bytes long.
 Data: < H      > A0 48 07 00 00 00 00 00 
{640} normal block at 0x00074E90, 1 bytes long.
 Data: < > 00 
{639} normal block at 0x00074870, 272 bytes long.
 Data: <        t    N  > 20 03 1B 01 CD CD CD CD 74 FA 1B 01 90 4E 07 00 
{638} normal block at 0x00074F68, 72 bytes long.
 Data: <C:\Users\Baz> 43 3A 5C 55 73 65 72 73 5C 45 42 41 52 47 52 49 
{637} normal block at 0x00074E48, 8 bytes long.
 Data: <hO  G   > 68 4F 07 00 47 00 00 00 
{616} normal block at 0x00074EE0, 72 bytes long.
 Data: <C:\Users\Baz> 43 3A 5C 55 73 65 72 73 5C 45 42 41 52 47 52 49 
{595} normal block at 0x00074828, 8 bytes long.
 Data: <        > F0 F9 1B 01 00 00 00 00 
{594} normal block at 0x000747E8, 1 bytes long.
 Data: < > 00 
{561} normal block at 0x000747A0, 5 bytes long.
 Data: <fast > 66 61 73 74 00 
{496} normal block at 0x00074760, 1 bytes long.
 Data: < > 00 
{311} normal block at 0x00074720, 1 bytes long.
 Data: < > 00 
{282} normal block at 0x000746E0, 2 bytes long.
 Data: <* > 2A 00 
{253} normal block at 0x00074698, 5 bytes long.
 Data: <auto > 61 75 74 6F 00 
Object dump complete.

我究竟做错了什么?

解决方法:

你没有做错任何事. “内存泄漏”来自静态初始化的google测试单例类的堆分配.

以下是谷歌测试FAQ:How do I suppress the memory leak messages on Windows?的答案

标签:c,windows,memory-leaks,googletest
来源: https://codeday.me/bug/20190729/1571030.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有