首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

delete []pVertices 以后就不能再指向新地址了

2012-06-28 
delete []pVertices 之后就不能再指向新地址了?这样, pVertices指向一个数组, 我想先删除数组, 然后再让pV

delete []pVertices 之后就不能再指向新地址了?
这样, pVertices指向一个数组, 我想先删除数组, 然后再让pVertices指向一个新数组:

C/C++ code
    delete []pVertices;    NumberOfPointSet = PointSet.size();    pVertices = new CVector3 [NumberOfPointSet];


但是后续程序出错. 当我删除delete []pVertices; 这句话, 程序就运行正确.

(不是说delete []pVertices 只是删除new的数组而不删除 pVertices指针身吗?)

[解决办法]
delete出错,一般都是越界和指针绝对值改变造成的,去查前面的逻辑
[解决办法]
NumberOfPointSet = PointSet.size();
你这个PointSet可以就算pVertices指向的东西吧,你如果已经释放了,再求大小是肯定会出错的,把这一句放到delete []pVertices;之前试试。
[解决办法]
char* pchar= new char[10];

strcpy(pchar,"hello");

delete []pchar;

pchar= new char[5];

strcpy(pchar,"world");
cout<<pchar<<endl;
我这个就可以,你自己再看看
[解决办法]
单步调试,确定出错的具体位置再修改之。
[解决办法]
单独提出这三个语句,反复调用看会不会出错

如果不出错,说明pVertices使用中越界了
[解决办法]
你是否在代码中修改过pVertices指针?如果修改过delete[]pVertices;时应该先恢复原来指针的地址
[解决办法]
调用操作系统内存管理new A,delete B就好象借邻居碗还盘子一样。(^_^)
[解决办法]
探讨
这样, pVertices指向一个数组, 我想先删除数组, 然后再让pVertices指向一个新数组:

C/C++ code

delete []pVertices;

NumberOfPointSet = PointSet.size();
pVertices = new CVector3 [NumberOfPointSet];



但是后续程序出错. 当我删……

热点排行