可能重复:
I need help declaring a temarary array to hold a bitmap picture while i rotate it 90 degrees
为什么我的程序在尝试运行时会崩溃? 同样在第10行的末尾(+(image.infoHeader.biWidth-c-1);)代码没有按照我想要的方式工作;你看到它有什么问题吗?
void rotate90(Image& image)
{
Pixel * tempPixel = new Pixel[(image.infoHeader.biWidth * image.infoHeader.biHeight)];
for(int r = 0; r < image.infoHeader.biHeight; r ++)
{
for(int c = 0; c < image.infoHeader.biWidth; c++)
{
int f = c+(r*image.infoHeader.biWidth);
int t = (image.infoHeader.biHeight - r - 1) + (image.infoHeader.biWidth-c-1);
tempPixel[t] = image.pixels[f];
}
}
tempPixel = image.pixels;
delete[] tempPixel;
}
答案 0 :(得分:1)
这是一个问题:
tempPixel = image.pixels;
delete[] tempPixel;
使用其他地址覆盖从new
获取的指针。然后在指针上调用delete[]
,该指针现在指向image
对象拥有的内存。