new与delete使用的问题
写了一段程序用new 和 delete分配释放内存,可是运行时发生内存泄漏。那位高手指点一下哈!谢谢
//记录直线坐标
LinePointX = new int[LinePnum];
LinePointY = new int[LinePnum];
//记录直线点值数组的起始点指针
//记录直线点值数组的起始点指针
//int* BakX = LinePointX;
///int* BakY = LinePointY;
int pointcount = 0;
for(j = 0; j <lHeight; j++)
{
for(i = 0;i <lWidth; i++)
{
// 指向缓存图像倒数第j行,第i个象素的指针
lpDst = (char *)lpNewDIBBits + lLineBytes * j + i;
if(0 == *lpDst)
{
*(LinePointX + pointcount) = i;
*(LinePointY + pointcount) = j;
pointcount++;
}
}
}
//计算子线斜率和截距
//Min2Method(xyTopX, xyTopY, LinePointX , LinePointY , LinePnum);
//?????????????????????????????????????????????????????????????????????????
//LinePointX = BakX;
//LinePointY = BakY;
delete []LinePointX;
delete []LinePointY;
//记录直线坐标
LinePointX = new int[LinePnum];
LinePointY = new int[LinePnum];
//记录直线点值数组的起始点指针
//记录直线点值数组的起始点指针
//int* BakX = LinePointX;
///int* BakY = LinePointY;
int pointcount = 0;
for(j = 0; j <lHeight; j++)
{
for(i = 0;i <lWidth; i++)
{
// 指向缓存图像倒数第j行,第i个象素的指针
lpDst = (char *)lpNewDIBBits + lLineBytes * j + i;
if(0 == *lpDst)
{
*(LinePointX + pointcount) = i;
*(LinePointY + pointcount) = j;
pointcount++;
}
}
}
//计算子线斜率和截距
//Min2Method(xyTopX, xyTopY, LinePointX , LinePointY , LinePnum);
//?????????????????????????????????????????????????????????????????????????
//LinePointX = BakX;
//LinePointY = BakY;
delete []LinePointX;
delete []LinePointY;
...全文
相关推荐
C++ 使用new与delete需注意的原则
C++的动态内存管理是通过new和delete两个操作来完成的,即用new来申请空间,用delete来释放空间。在使用new和delete时,注意以下原则。 1.new与delete需一一对应 用new操作申请空间,如果申请成功,必须在以后的某个时刻用delete释放该空间,既不能忘记释放,也不能多次释放。前者会引起内存泄露,后者会引起运行时错误。如下面的程序。 #include <iostream> using namespace std; int main() { int *p; p=new int(3); if(p) { delete p; } delete p; r
C++常见问题:何时使用new和delete
C++面试题
new,delete和指针
new,delete和指针实例讲解
C++动态内存分配(new/new[]和delete/delete[])详解
主要介绍了C++动态内存分配(new/new[]和delete/delete[])详解的相关资料,需要的朋友可以参考下
C++中new和delete的介绍
今天小编就为大家分享一篇关于C++中new和delete的介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧


图形处理/算法

