为什么我的程序在尝试运行时会崩溃?

时间:2011-12-08 00:32:29

标签: c++ visual-c++

  

可能重复:
  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;
}

1 个答案:

答案 0 :(得分:1)

这是一个问题:

tempPixel = image.pixels;
delete[] tempPixel;

使用其他地址覆盖从new获取的指针。然后在指针上调用delete[],该指针现在指向image对象拥有的内存。