gpt4 book ai didi

c - 访问冲突写入位置 0x011CF000

转载 作者:行者123 更新时间:2023-11-30 18:31:21 27 4
gpt4 key购买 nike

我正在尝试使用 bitmap_image.hpp 库从 .bmp 图像获取单色图像。但在一个地方(Pic[i][j] = 0.3 * r + 0.59 * g + 0.11 * b;)我收到该错误:PicCircle.exe 中 0x0019BD8F 处未处理的异常:0xC0000005:访问冲突写入位置 0x011CF000。 。那么,这有什么问题吗?

代码:

#define _SCL_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "bitmap_image.hpp"

#define C 0.01

double** ArrayCreate ( int M, int N )
{
int i;
double** ArrayRoot;

ArrayRoot = (double **)malloc(sizeof(double*) * M);

for (i = 0; i < M; i++)
ArrayRoot[i] = (double *)malloc(sizeof(double) * N);

return ArrayRoot;
}

void ArrayDestroy ( double** Array , int M)
{
int i;

for (i = 0; i < M; i++){
Array[i] = (double *)realloc(Array[i], 0);
};

Array = (double **)realloc(Array, 0);
}

void main ( void )
{
double** Pic;
unsigned char r, g, b;
int H, W, i, j;

bitmap_image image("m1.bmp");

H = image.height();
W = image.width();

Pic = ArrayCreate(H, W);


for (i = 0; i < W; i++)
for (j = 0; j < H; j++)
{
image.get_pixel(i, j, r, g, b);
Pic[i][j] = 0.3 * r + 0.59 * g + 0.11 * b;
}

for (i = 0; i < W; i++)
for (j = 0; j < H; j++)
{
if (abs(sqrt(pow(Pic[i + 1][j] - Pic[i][j], 2) + pow(Pic[i][j + 1] - Pic[i][j], 2))) >= C)
Pic[i][j] = 1;
else
Pic[i][j] = 0;
}


ArrayDestroy(Pic, H);
}

最佳答案

在第一个循环中,您以 Pic[width][height] 的形式访问 Pic 数组,但在第二个循环中,您以 Pic[height] 的形式访问它][宽度]。这两个中的一个不正确,可能是第一个。

修复 for 循环应该可以解决问题。

关于c - 访问冲突写入位置 0x011CF000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24146043/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com