内存泄露与内存管理
来源:互联网 发布:古代市民文学知乎 编辑:程序博客网 时间:2024/06/07 10:24
软件编程中,最棘手的问题恐怕是内存管理的问题,一些小的内存分配了之后没有释放掉,或者在释放之前函数return了,而一般的内存泄露工具比如visul leak detector并不能很好检查到内存的泄露。
StackSeq* seq = (StackSeq*)malloc(sizeof(StackSeq));
init_stack_seq(seq,n);
。。。。
free_stack_seq(seq);
其中:
void init_stack_seq(StackSeq* seq,int n)
{
seq->elements = (int*)malloc(sizeof(int)*n);
seq->max = n;
seq->top = -1;
}
void free_stack_seq(StackSeq* seq)
{
free(seq->elements);
}
在以上的程序中,free_stack_seq(seq)仅仅释放了seq->elements,并没有释放掉seq本身。虽然seq本身可能只有12字节。但如果在视频图像处理中,每一帧调用一次,那么累计的量是很大的,我跑过一个程序,跑了2天,从200M内存冲到500M内存,虽然2天的测试不会造成挂掉,但如果移植到linux等内存较小的环境下,就很容易造成设备的挂掉。
上述中还要增加一个free(seq),紧跟free_stack_seq(seq)中。有时候这个类似的代码命名很容易造成误解,以为free_stack_seq(seq)释放的是包括seq本身的。所以写代码的时候一定要谨慎,最好能把
- 内存泄露与内存管理
- Java的内存管理与内存泄露
- 关于内存管理之泄露与越界
- Android之内存泄露与内存管理
- 内存泄露和内存管理
- 如何管理内存泄露
- 内存管理和泄露
- 内存管理-防止泄露
- 详细介绍Java的内存管理与内存泄露
- 详细介绍Java的内存管理与内存泄露
- 详细介绍Java的内存管理与内存泄露
- 详细介绍Java的内存管理与内存泄露
- 详细介绍Java的内存管理与内存泄露
- 详细介绍Java的内存管理与内存泄露
- 详细介绍Java的内存管理与内存泄露
- 原因:Java的内存管理与内存泄露
- 详细介绍Java的内存管理与内存泄露
- 详细介绍Java的内存管理与内存泄露
- Python的__del__()方法
- DBA_SEGMENTS - 查看数据库对象所分配的物理存储空间
- [Leetcode] Container With Most Water
- JavaScript快速开发工具箱
- Java中abstract和interface的区别
- 内存泄露与内存管理
- mysql_1
- PEAR官方php编码标准 I
- ios cell添加多个UILabel
- 调查:2013年十大急需的热门IT人才
- 七家崛起中的云计算公司(1)
- 学习NodeJS第三天:打造Nodejs的调试环境(下)
- PEAR官方php编码标准 II
- javaweb_classpath 与 classpath*