首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未处理异常:访问冲突读取位置0x015E2348

未处理异常:访问冲突读取位置0x015E2348
EN

Stack Overflow用户
提问于 2015-12-13 14:25:51
回答 1查看 76关注 0票数 0

好的,我的代码有点问题。当我尝试运行它时,这个错误显示。

Dywan.exe: 0xC0000005中0x012D4CBF处的未处理异常:访问冲突读取位置0x015E2348。

当ROZMIAR=257或更少时,代码正常工作。但我需要设定更高的价值,比如500。应该使用动态数组来处理double odcien = dane[x][y] + dane[x + dlboku][y] + dane[x][y + dlboku] + dane[x + dlboku][y + dlboku];中的错误吗?

代码语言:javascript
复制
double dane[ROZMIAR][ROZMIAR];
double wartoscinit = 0.0;
dane[0][0] = dane[0][ROZMIAR - 1] = dane[ROZMIAR - 1][0] = dane[ROZMIAR -1][ROZMIAR - 1] = wartoscinit;`

void comp_Fractal(){
for (int dlboku = ROZMIAR - 1; dlboku >= 2; dlboku /= 2, h /= 2.0)  {
    int polboku = dlboku / 2;
    for (int x = 0; x<ROZMIAR - 1; x += dlboku) {
        for (int y = 0; y<ROZMIAR - 1; y += dlboku) {

            double odcien = dane[x][y] + dane[x + dlboku][y] + dane[x][y + dlboku] + dane[x + dlboku][y + dlboku];

            odcien /= 4.0;

            double wzor = (-h) + rand() * (2*h) / RAND_MAX;
            dane[x + polboku][y + polboku] = odcien + wzor;

        }
    }
    for (int x = 0; x<ROZMIAR - 1; x += polboku) {
        for (int y = (x + polboku) % dlboku; y<ROZMIAR - 1; y += dlboku) {


            double odcien =
                dane[(x - polboku + ROZMIAR) % ROZMIAR][y] +
                dane[(x + polboku) % ROZMIAR][y] +
                dane[x][(y + polboku) % ROZMIAR] +
                dane[x][(y - polboku + ROZMIAR) % ROZMIAR];

            odcien /= 4.0;

            double wzor = (-h) + rand() * (2*h) / RAND_MAX;
            odcien = odcien + wzor;

            dane[x][y] = odcien;

            if (x == 0) dane[ROZMIAR - 1][y] = odcien;
            if (y == 0) dane[x][ROZMIAR - 1] = odcien;
        }
    }
}

for (int i = 0; i<ROZMIAR - 1; i++)
    for (int j = 0; j<ROZMIAR - 1; j++) {
        if (dane[i][j] > maxY)
            maxY = dane[i][j];
        if (dane[i][j] < minY)
            minY = dane[i][j];
    }

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-13 14:30:39

dlbokuyx都类似于ROZMIAR - 2时,

代码语言:javascript
复制
dane[x + dlboku][y + dlboku];

将使您访问超出界限的dane[ROZMIAR + ROZMIAR - 4][ROZMIAR + ROZMIAR - 4]。你的代码有问题。它只是ROZMIAR的大值,这使得它从分配的内存和崩溃中访问。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34252133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档