C++内存溢出的测试和管理

2020-04-11  本文已影响0人  苇之磐

1.问题

在用VS2015写C++程序过程中发现,分配的内存空间经过数据拷贝后,在free的时候,出现以下错误:

C++ heap corruption dection,CRT detected that the application wrote to memory after end of heap buffer

2.问题的分析和解决

这是典型的内存溢出错误,虽然报错在内存释放的地方,但实际上内存溢出的地方显然不在这一行,而是在内存赋值和拷贝的地方。这里就需要检测在赋值的哪一行出了内存溢出的问题。测试方法如下:

#include <stdlib.h>

#include <crtdbg.h>

#include <iostream>

#define CRTDBG_MAP_ALLOC

然后在数据拷贝部分加入如下代码:

_ASSERTE(_CrtCheckMemory()); //可以定位内存泄露的行

这样,不用等到内存释放,在内存拷贝获填充时,在内存越界的地方就会报错,从而定位内存泄漏的地方。

上一篇 下一篇

猜你喜欢

热点阅读