相关疑难解决方法(0)

如何检测/避免(非托管)代码中的内存泄漏?

在非托管C/C++代码中,检测内存泄漏的最佳实践是什么?和编码指南,以避免?(好像就这么简单;)

过去我们使用了一些愚蠢的方法:每次内存分配调用都有一个计数器增量,而在释放时减少.在程序结束时,计数器值应为零.

我知道这不是一个很好的方式,有一些捕获.(例如,如果释放由平台API调用分配的内存,则分配计数将与您的释放计数不完全匹配.当然,我们在调用分配内存的API调用时递增计数器.)

我期待您的经验,建议和一些简化此工具的工具参考.

c c++ memory-leaks

123
推荐指数
9
解决办法
16万
查看次数

什么工具可以捕获C中的缓冲区溢出?

所以我有这段简单的代码,演示了一个简单的缓冲区溢出:

#include <stdio.h>

int main(void)
{
    char c[4] = { 'A', 'B', 'C', 'D' };
    char d[4] = { 'W', 'X', 'Y', 'Z' };

    printf("c[0] is '%c'\n", c[0]);

    d[4] = 'Z'; /* Overflow that overwrites c[0] */

    printf("c[0] is '%c'\n", c[0]);

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

输出:

$ ./a.out
c[0] is 'A'
c[0] is 'Z'
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下gcc选项编译此代码,并使用飞行颜色传递:

gcc -Wall -Wextra -Wformat=2 -Wswitch-default -Wcast-align -Wpointer-arith \
    -Wbad-function-cast -Wstrict-prototypes -Winline -Wundef -Wnested-externs \
    -Wcast-qual -Wshadow -Wwrite-strings -Wconversion -Wunreachable-code \
    -Wstrict-aliasing=2 -ffloat-store -fno-common -fstrict-aliasing \
    -Wstack-protector …
Run Code Online (Sandbox Code Playgroud)

c debugging stack

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

是否有免费软件实用程序来监视c ++应用程序的内存泄漏?

我正在验证用c ++编写的带有内存泄漏的应用程序,并且需要一个实用程序(免费软件),我可以轻松地运行以检测它在哪里发生.有任何想法吗?

c++ memory memory-leaks

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

标签 统计

c ×2

c++ ×2

memory-leaks ×2

debugging ×1

memory ×1

stack ×1