读书人

关于用 delete [] 删除数组 的有关问题

发布时间: 2012-10-20 14:12:48 作者: rapoo

关于用 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]); //参数不影响
[解决办法]
探讨

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]); //参数不影响

读书人网 >C++

热点推荐