![](/img/trans.png)
[英]Unhandled exception at 0x771515ee Microsoft C++ exception: std::bad_alloc at memory location 0x0049f904
[英]Unhandled exception at 0x00007FFCA550A839 in Project1.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0000002F82CFEF60. occurred
我正在嘗試編寫一個使用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) {
並且它應該起作用!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.