c++ - Project1.exe 中 0x00007FFCA550A839 处的未处理异常:Microsoft C++ 异常:内存位置 0x0000002F82CFEF60 处的 std::bad_alloc。发生

标签 c++

我正在尝试编写一个程序,使用 opencv 从图像中读取像素值并在控制台或另一个窗口中打印该值。我的程序已成功编译和链接,但在 Visual stdio 中运行该程序时出现以下错误行。

“Project1.exe 中 0x00007FFCA550A839 处的未处理异常:Microsoft C++ 异常:内存位置 0x0000002F82CFEF60 处的 std::bad_alloc。发生”

我已经尝试过直接运行可执行文件。然后我收到此错误消息“调试错误。about() 已被调用”。 这是我的 main.cpp 代码

'''C++

    #include <stdlib.h>
    #include <SDL.h>
    #include <opencv2/opencv.hpp>
    #include <iostream>
    #include <vector>

using namespace cv;

int retColorRed(int x, int y)
{
    Mat img = imread("s1.jpg", 0);
    return img.at<Vec3d>(x, y)[0];
}

int retColorGreen(int x, int y)
{
    Mat img = imread("s1.jpg", 0);
    return img.at<Vec3b>(x, y)[1];
}

int retColorBlue(int x, int y)
{
    Mat img = imread("s1.jpg", 0);
    return img.at<Vec3b>(x, y)[2];
}



    #define WINDOW_WIDTH 200
    #define WINDOW_HEIGHT 300

    int main(int argc, char* args[]) {
        SDL_Event event;
        SDL_Renderer* renderer;
        SDL_Window* window;

        SDL_Init(SDL_INIT_VIDEO);
        SDL_CreateWindowAndRenderer(WINDOW_WIDTH, WINDOW_HEIGHT, 0,&window, &renderer);
        SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
        SDL_RenderClear(renderer);


        int width = WINDOW_WIDTH;
        int height = WINDOW_HEIGHT;
        int horizonaltIter = 0, virticalIter = 0;

        while (virticalIter <= height)
        {
            while (horizonaltIter <= width) {
                int red = retColorRed(horizonaltIter,virticalIter);
                int green = retColorGreen(horizonaltIter, virticalIter);
                int blue = retColorBlue(horizonaltIter, virticalIter);
                SDL_SetRenderDrawColor(renderer, red, green, blue, 255);
                SDL_RenderDrawPoint(renderer, horizonaltIter, virticalIter);
                SDL_RenderPresent(renderer);
                horizonaltIter++;
            }
            virticalIter++;
        }



        while (1) {
            if (SDL_PollEvent(&event) && event.type == SDL_QUIT)
                break;
        }
    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    SDL_Quit();
    return EXIT_SUCCESS;
}

'''

这是在 Visual Studio ide 中显示的错误信息

“Project1.exe 中 0x00007FFCA550A839 处的未处理异常:Microsoft C++ 异常:内存位置 0x000000A6BD0FF1A0 处的 std::bad_alloc。发生”

最佳答案

更改 while (horizonaltIter <= height) {while (horizonaltIter <= width) {它应该有效!

关于c++ - Project1.exe 中 0x00007FFCA550A839 处的未处理异常:Microsoft C++ 异常:内存位置 0x0000002F82CFEF60 处的 std::bad_alloc。发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57737725/

相关文章:

c++ - 使用 int 10h 从内联汇编打印 c char*

java - 有没有办法使用 C++ 从 Java 进程中读取值?

c++ - 生成大小不是 16 的倍数的加密数据

c++ - QSettings - 两个进程之间的同步问题

c++ - 在模板特化中映射枚举

c++ - 没有成员函数的类实例的默认返回

c++ - 复制 C 风格的数组和结构

c++ - 结构成员的文件输入示例?

c++ - 牛顿法返回 NaN

c++ - 为什么标准将 borrowed_subrange_t 定义为 common_range?