用new分配的数组和[]定义的数组有什么不同呢?该怎么处理

用new分配的数组和[]定义的数组有什么不同呢?
在一个类里面定义一个的数组(MEMBUFFER和LEVEL定义在类外面的结构体)
private:
int n;
MEMBUFFER mem_buffer[10];
LEVEL level[20];
可以正常运行.
但是改为
private:
int n;
MEMBUFFER *mem_buffer;
LEVEL level[20];
在初始化函数里:
mem_buffer=new MEMBUFFER[10];
程序就不能正常运行,主要表现是:
level[i].brec=mem_buffer[i].mb.brec;
执行了这条语句后改变了n的值为mem_buffer[i].mb.brec;(我试了它总是改变定义在mem_buffer前面的变量)
但是如果我把LEVEL level[20]放在定义的最前面,就没有这种现象了.
private:
LEVEL level[20];
int n;
MEMBUFFER *mem_buffer;

我一开始编的时候直接定义了数组都好好的.现在想改为动态数组就出现了这样的问题,由于代码太长结构也比较复杂,所以不能把程序贴出来,请大家分析以下可能的原因!谢谢!


------解决方案--------------------
level[i].brec=mem_buffer[i].mb.brec;

i 从多少到多少?
------解决方案--------------------
从你提供的信息上看,应该不会出现这种情况的,

而且i是从0-2的,也应该不是数组越界造成的破坏.

不懂?????????

另外,楼主小心:
"但是如果我把LEVEL level[20]放在定义的最前面,就没有这种现象了. "
没这种现象,可能有别的现象,可能有你不太关注的数据在被破坏着,这种错误
更可怕.