相关疑难解决方法(0)

如何在C++代码/项目中查找内存泄漏?

我是Windows平台上的C++程序员.我正在使用Visual Studio 2008.

我通常在内存泄漏的代码中结束.

通常我通过检查代码发现内存泄漏,但它很麻烦,并不总是一个好方法.

由于我买不起付费内存泄漏检测工具,我希望你们建议尽可能避免内存泄漏的方法.

  1. 我想知道程序员如何找到内存泄漏.
  2. 是否有任何标准或程序应该遵循以确保程序中没有内存泄漏?

c++ memory-leaks

157
推荐指数
12
解决办法
21万
查看次数

什么是C/C++程序及其插件DLL的最佳免费内存泄漏检测器?

我有.exe加载的.exe和许多插件.dll模块.(我有两者的来源.)跨平台(带源)解决方案是理想的,但平台可以缩小到WinXP和Visual Studio(在我的情况下为7.1/2003).

内置的VS泄漏检测器只给出了调用new/malloc的行,但是我有一个分配包装器,所以完整的符号堆栈跟踪是最好的.

检测器还能够检测.exe及其附带的插件.dll模块中的泄漏.

c c++ memory-leaks visual-studio

48
推荐指数
3
解决办法
10万
查看次数

C的内存泄漏检测器?

什么内存泄漏探测器有人有很好的经验?

以下是目前答案的摘要:

Valgrind - 用于构建动态分析工具的仪器框架.

电围栏 - 与GDB一起使用的工具

夹板 - 注释辅助轻量级静态检查

Glow Code - 这是一个完整的实时性能和内存分析器,适用于使用C++,C#或任何.NET Framework开发应用程序的Windows和.NET程序员

另请参阅此stackoverflow帖子.

c memory debugging memory-leaks

31
推荐指数
2
解决办法
2万
查看次数

哪些C/C++工具可以检查缓冲区溢出?

我被要求维护一个充满内存泄漏的大型C++代码库.在探索时,我发现我们有很多缓冲区溢出导致泄漏(它如何变坏,我不想知道).

我决定先删除缓冲区溢出.为了使我的bug更容易找到,可以使用哪些工具来检查缓冲区溢出?

c c++ buffer-overflow buffer-overrun

22
推荐指数
4
解决办法
2万
查看次数

用于GNU C/C++的Windows下的内存泄漏检测

什么内存泄漏检测工具可用于Windows上的开源C/C++?

c++ windows open-source memory-leaks

9
推荐指数
2
解决办法
9137
查看次数

C++内存管理

我在大学里学到,你总是要释放你未使用过的物品,而不是你实际上是如何做到的.例如,正确构建代码等等.关于如何在C++中处理指针有什么一般规则吗?

我目前不允许使用提升.我必须坚持使用纯c ++,因为我使用的框架禁止使用泛型.

c++ memory pointers

8
推荐指数
2
解决办法
5692
查看次数

如何知道C++中的内存使用情况

我有一个由Visual Studio 2010运行的C++程序,如何监视程序的内存使用情况?是否存在简单的API,例如我可以调用clock_t start1start1 = clock();监视程序的时间使用情况.谢谢:)

c++ memory memory-management

6
推荐指数
1
解决办法
2万
查看次数

如何在Visual Studio C++中检查内存是否已被释放?

我想检查我的所有内存在C++中的Visual Studio 2008中是否已被释放.我听说我可以添加一些包含,也许可以写一些代码行,应该这样做.

有谁知道我怎么做?

提前致谢,

格雷格

c++ winapi memory-management visual-studio-2008

2
推荐指数
1
解决办法
3748
查看次数

如果我将POD结构分配给另一个POD结构,是否有任何内存泄漏?

例如:

struct Vertex
{
  int x;
  int y;
};

Vertex makeVertex(int xpos, int ypos)
{
  Vertex tmp = {xpos, ypos};
  return tmp;
}
Run Code Online (Sandbox Code Playgroud)

如果我这样做,我会得到内存泄漏吗?:

Vertex a = makeVertex(30,40);
a = makeVertex(5, 102);
Run Code Online (Sandbox Code Playgroud)

c++

1
推荐指数
1
解决办法
116
查看次数

在这种情况下内存泄漏?一遍又一遍地使用新关键字

我对内存泄漏非常谨慎,所以我认为我已经验证了这一点.在下面的例子中会出现内存泄漏吗?我的直觉是肯定的.

class Handler        // Class definition
{public:
  ~Handler();
  int* ptrToInts;    
};

Handler::~Handler()  // Class destructor
{
  delete[] ptrToInts; 
}

Handler handler;     // Global object


void aFunction()
{
    handler.ptrToInts = new int[20];
}


int main()
{
  bool quit = false;

  while(!quit)
    {
      aFunction(); 
    }

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

在heapeach时间,ptrToInts会在单独的内存中创建20个单独的新int?

另外,另一个问题是,如果不是析构函数,是否会释放动态分配的内存?看到类的生命周期是程序的持续时间,它会清除所有"新"内存吗?

编辑:谢谢你的回答.我问这个的原因是因为我试图绕过调用new并删除WadProc每次基本上调用Raw Input,这就是MSDN告诉你这样做的方式.似乎非常低效.

c++ memory heap pointers memory-leaks

-2
推荐指数
1
解决办法
163
查看次数

是否有内存泄漏,我正确释放内存

亲爱的各位议员,我对是否在正确的地方释放记忆感到困惑.特别是*sResult?

int ReadToSerialPort( char *psResponse, int iMax)  
{  

    size_t iIn;  

    if ( fd < 1 )  
    {  
        printf( "port is not open\n" );  
        return -1;  
    }       

    iIn = read( fd, psResponse, iMax-1 );     
    if ( iIn < 0 )      
    {
        if ( errno == EAGAIN )  
        {  
            printf( "The errror in READ" );  
            return 0; // assume that command generated no response      
        }  
        else  
            printf( "read error %d %s\n", errno, strerror(errno) );  

   }  
   else   
 psResponse[(int)iIn<(int)iMax?iIn:iMax] = '\n';   

  return iIn;   

} …
Run Code Online (Sandbox Code Playgroud)

c++ memory-leaks

-3
推荐指数
1
解决办法
326
查看次数