请教这段程序错在哪,运行时输入15会报错,输入其它数字,可能正确运行,什么原因呢

请问这段程序错在哪,运行时输入15会报错,输入其它数字,可能正确运行,什么原因呢
C/C++ code

#include <string.h>
#include <iomanip>
#include <iostream>
using namespace std;

class Njie
{
public:
    Njie(int m = 1);    
    void setNjie();
    void print();
    ~Njie();
private:
    int *buffer;    
    int n;
};

Njie::Njie(int m)
{
    n = m;
    buffer = new int[n*n];
    memset(buffer,0,n*n*sizeof(int));
}

Njie::~Njie()
{
    delete []buffer;
    buffer=NULL;
}

void Njie::setNjie()
{
    int i,row,line;                // row 行  line 列
    int a = 0, k = 1;
    int b = (n-1)/2;
    buffer[b] = 1;
    for(i=0; i<n*n; i++)
    {
        row = a;
        line = b;
        a = (a + n - 1) % n;
        b = (b + n + 1) % n;
        if(buffer[a*n+b] == 0)
        {
            buffer[a*n+b] = ++k;
        }
        else
        {
            a = row + 1;
            b = line;
            buffer[a*n+b] = ++k;
        }
    }
}

void Njie::print()
{
    int i,j;
    for(i=0; i<n; i++)
        for(j=0; j<n; j++)
        {

            cout << setw(5) <<buffer[i*n+j];
            if((j+1) == n)
            {
                cout<<endl;
            }
        }
}


void main()
{
    int n;
    cout<<"输入N:";
    cin>>n;
    
    Njie m = n;
    m.setNjie();
    m.print();
}

请问这段程序错在哪,运行时输入15会报错,输入其它数字,可能正确运行,什么原因呢

------解决方案--------------------
表示 运行后输入 15 后没有错啊
------解决方案--------------------
我运行没错啊..
你报什么错?
------解决方案--------------------
探讨
Debug error