写了一个关于内存的C++小程序,有有关问题,各位帮忙看下

写了一个关于内存的C++小程序,有问题,各位帮忙看下
代码如下:

#include <iostream>
#include <string.h>
using   namespace   std;
#define   BYTE   unsigned   char
class   parket
{
public:
parket();
~parket();
void   increaseNO(int);
        void   setparket(int);
        int   getNO();  
int   getparket();  
private:  
int   add;                               //和值
        static   int   n;
int   parketNo;
};
int   parket::n=0;
parket::parket()
{
add=0;
parketNo=n;
}

parket::~parket(){}
  void   parket::increaseNO(int   step)               //报头的编号增加函数
{
parketNo+=step;
  }

  void   parket::setparket(int   parkdata)               //设置包中的内容
  {       //int   i;
  //for(i=0;i <192;i++)
  //{
        add=parkdata;
  //}
  }

int   parket::getNO()                             //获取报头编号
{
return   parketNo;
}

int   parket::getparket()                         //获取处理好的包
{
return   add;
}
void   main()
{       char   YN;
        int   i,j,k;
        int   b[10];
parket   add[5];
        int   a1=1;
        int   *pbuf=new   int[0x100000];
memset(pbuf,0,0x100000);//初始化buffer
for(i=0;i <5;i++)
{
                  add[i].increaseNO(i);
cout < < "数据包No为: " < <add[i].getNO() < <endl;
add[i].setparket(a1);            
b[10]=add[i].getparket();
cout < < "数据包中的内容为 " < <b[10] < <endl;
}
        memcpy(pbuf,b,sizeof(b));
                cout < < "是否继续查看内存中的数据:(Y/N) " < <endl;
cin> > YN;
memcpy(b,pbuf,sizeof(b));
        if(YN== 'y ')
{      
for(j=0;j <5;j++)
{       cout < < "编号为 " < <j < <endl;
                                for(k=0;k <10;k++)
{
                          cout < < "数组中的数据为: " < <b[10] < <endl;
}
}
}
}
运行后达不到我想要的效果,奇怪的地方有:
在程序中两次用到       cout < < "数组中的数据为: " < <b[10] < <endl;       但两次的结果不一样,第一次输出的全是1,第2次输出的是0~9,难道是我对内存操作时影响了其中的值???我不知道是什么地方错了,望指教下.


------解决方案--------------------
b[10]越界了。
------解决方案--------------------
自己不会调试吗...

楼上说的不错 b[10]改为b[9]看看