정말 도움이되는 사람들에게 정말 감사드립니다. 감사합니다!메모리 누수를 방지하기 위해 어떻게 삭제할 수 있습니까?
struct MyImage
{
BYTE* pImage;
int width;
int heigth;
};
MyImage* pMyImage = new MyImage;
pMyImage->pImage = new BYTE[width * heigth];
내가 이렇게해야합니까?
delete [] pMyImage->pImage;
또는 이렇게해야합니까?
delete[] pMyImage->pImage;
delete pMyImage;
귀하의 아이디어와 감사의 말씀에 감사드립니다.
MyImage* transform(Bitmap &gdiImage)
{
MyImage* image=new MyImage;//新建一个MyImage
int height=gdiImage.GetHeight();
int width=gdiImage.GetWidth();
image->pImage=new BYTE[height*width];//为存储灰度图像数据分配内存
image->height=height;
image->width=width;
Color temp;
for(int y = 0;y < height; ++y)
for(int x = 0;x < width; ++x)
{
//获取当前GDI+图像坐标所指向的像素的颜色
gdiImage.GetPixel(x, y, &temp);
//将这个像素的灰度值赋给灰度图像对应的内存中的相应的字节
*(image->pImage + y * width + x) = transformPixel(temp.GetValue());
}
return image;
}
내 코드는이 함수는 구조체 myimage을에 gdiImage 번역, 다음과 같습니다. 은 다음과 같이, 나는 새로운 MyImage와 MyImage의 요소 인 새로운 pImage를 사용할 수 없다고 말합니다. 어떻게해야합니까?
둘째, 하나의 'new'는 항상 하나의 'delete'와 일치해야합니다 (물론 더 이상 데이터가 필요 없으면). – Nbr44
그리고 이상적으로 당신은'MyImage'의 소멸자에서'delete [] pImage;를 가질 것입니다. 각 인스턴스는'pImage'를 소유하므로 인스턴스를 지우는 책임이 있습니다. – BoBTFish
각'new'에 대해'delete'가 필요합니다. 각각의'new []'에는'delete []'가 필요합니다. – juanchopanza