关于用 delete [] 删除数组 的问题
我写了一个小代码,测试new []和 delete [],遇到个问题,执行到 delete []就弹出 _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) 中断提示,希望好心的各位大神,为我指点迷津
[code=C/C++][/code]
just.h
#include <iostream>
#include <stdio.h>
struct Node
{
float x;
float y;
};
class test
{
private:
Node* _node;
int _num;
public:
test(Node* node , int num);
~test();
void addNode(Node* node);
void display();
};
just.cpp
#include "just.h"
using namespace std;
test::test(Node *node, int num)
{
_num = num;
_node = new Node [_num];
for (int i = 0 ; i < _num ; i++)
{
_node[i] = node[i];
}
_node = node;
}
test::~test()
{
//delete [] _node;
}
void test::addNode(Node *node)
{
delete [] _node; //执行到这就进行不下去了
}
void test::display()
{
for (int i = 0 ; i < _num ; i++)
{
cout << _node[i].x << " " << _node[i].y << endl;
cout << endl;
}
}
main.cpp
#include "just.h"
#include <stdlib.h>
int main()
{
Node a[5];
a[0].x = 0;
a[0].y = 1;
a[1].x = 9;
a[1].y = 8;
a[2].x = 6;
a[2].y = 5;
a[3].x = 11;
a[3].y = 12;
a[4].x = 19;
a[4].y = 18;
test b(a , 5);
b.display();
b.addNode(&a[3]); //参数不影响
system("pause");
return 0;
}
[解决办法]
Node a[5];
b.addNode(&a[3]); //参数不影响
delete [] _node; //执行到这就进行不下去了
你这是做什么呢?
你这有不是new的内存空间,你delete做虾米,再回去想想啥时候用delete吧
[解决办法]
- C/C++ code
void test::addNode(Node *node){ delete [] _node; //执行到这就进行不下去了}////你在下面代码调用了test::addNode(Node *node)函数,传的参数却是&a[3],这并不是new出来的何须delete?new和delete必须配对使用Node a[5];.....b.addNode(&a[3]); //参数不影响
[解决办法]