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

C++ 为什么我的程序在尝试运行此程序时崩溃?,c++,visual-c++,C++,Visual C++,可能重复: 为什么我的程序在尝试运行此程序时崩溃? 同样在代码第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 <

可能重复:

为什么我的程序在尝试运行此程序时崩溃? 同样在代码第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;
}
void rotate90(图像和图像)
{
像素*tempPixel=新像素[(image.infoHeader.biWidth*image.infoHeader.biHeight)];
对于(int r=0;r
这是一个问题:

tempPixel = image.pixels;
delete[] tempPixel;

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

不,它不是;这是一个修复的问题与实际问题现在你应该编辑你现有的问题!不,它没有;按照链接…顺便说一句,你应该在前面的问题中提到,你最终要交换指针,我关于
delete[]
的建议会有所不同。