请问这段程序错在哪,运行时输入15会报错,输入其它数字,可能正确运行,什么原因呢
#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();}