어디서 버퍼 오버플로우가 나는지 알수 있을까요?

조회수 533회
#include <iostream>
#include <stdio.h>
#include <string.h>

// codeup NO.1098
using namespace std;

int main()
{
    int h = 0, w = 0;
    scanf("%d %d", &h, &w);
    int** b = new int* [h + 1];
    for (int i = 0; i < h + 1; i++)
    {
        b[i] = new int[w + 1];
        memset(b[i], 0, sizeof(int) * (h + 1));

    }

    /*
    for (int i = 1; i < h + 1; i++)
    {
        for (int j = 1; j < w + 1; j++)
        {
            printf("%d ", b[i][j]);
        }
        printf("\n");
    }
    */


    int n = 0; // 막대 몇개넣을건지 결정할 변수
    scanf("%d", &n);

    while (n > 0)
    {
        int L = 0, d = 0, x = 0, y = 0;
        scanf("%d %d %d %d", &L, &d, &x, &y);
        if (d == 0)
        {
            for (int i = 1; i <= L; i++)
            {
                b[x][y] = 1;
                y++;
            }

        }
        else if (d == 1)
        {
            for (int i = 1; i <= L; i++)
            {
                b[x][y] = 1;
                x++;
            }

        }
        n--;
    }

    for (int i = 1; i < h+1; i++)
    {
        for (int j = 1; j < w+1; j++)
        {
            printf("%d ", b[i][j]);
        }
        printf("\n");
    }

    for (int i = 0; i < h + 1; i++)
    {
        delete[] b[i];

    }
    delete[] b;


    return 0;
}

비쥬얼스튜디오에선 문제없이 돌아가지만 막상 코드업에 넣으면 안돌아가는것 같습니다 ㅇㅅㅇ...

Main: malloc.c:2394: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)