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

weiwozhonghua weiwozhonghua 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在一个类里面定义一个的数组(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;

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

相关推荐

评论 9
收藏 已收藏
分享
返回顶部
weiwozhonghua
C++ 语言 65,214 成员 250,514 内容