[英]Memory leak: verify block type
我遇到內存泄漏問題和最低代碼,如下所示。 我的編譯器是VS2008。
//haar.h
#include "stdio.h"
#include "stdlib.h"
class HaarClass
{
public:
HaarClass(void);
~HaarClass(void);
void Memory_Leak_Test();
private:
long* feature_vector_;
};
HaarClass::HaarClass(void)
{
feature_vector_ = NULL;
}
HaarClass::~HaarClass(void)
{
if (feature_vector_ != NULL) {
delete[] feature_vector_;
}
}
void HaarClass::Memory_Leak_Test(){
if (feature_vector_!=NULL) {
delete[] feature_vector_;
}
for (int i=0; i<10; i++)
{
feature_vector_ = new long[100];
if (feature_vector_!=NULL) {
delete[] feature_vector_;
}
}
}
而主文件是
//main.cpp
#include <cstdio>
#include "haar.h"
int main()
{
HaarClass a;
a.Memory_Leak_Test();
return 0;
}
錯誤或警報是
_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead-> nBlockUse));
在dbgdel.cpp行中:52。
因此,有什么錯誤? 謝謝。
當您在Memory_Leak_Test
刪除指針時,不要將指針設置為NULL,因此析構函數將嘗試再次刪除它
void HaarClass::Memory_Leak_Test(){
if (feature_vector_!=NULL) {
delete[] feature_vector_;
}
for (int i=0; i<10; i++)
{
feature_vector_ = new long[100];
if (feature_vector_!=NULL) {
delete[] feature_vector_;
feature_vector = NULL; // <<-----
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.