用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;
我一开始编的时候直接定义了数组都好好的.现在想改为动态数组就出现了这样的问题,由于代码太长结构也比较复杂,所以不能把程序贴出来,请大家分析以下可能的原因!谢谢!
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;
我一开始编的时候直接定义了数组都好好的.现在想改为动态数组就出现了这样的问题,由于代码太长结构也比较复杂,所以不能把程序贴出来,请大家分析以下可能的原因!谢谢!
...全文
相关推荐
c++动态分配内存
#### 二、简答题解析**1. new运算符为一个变量或对象分配存储空间和为一个数组分配存储空间,使用方法上有什么不同?对应的delete运算符使用有什么不同?
04java数组.txt
- **特性**:一旦声明后,数组的长度就是固定的,且数组中所有的元素必须是同一数据类型。#### 三、内存分配在Java中,内存被划分为不同区域,主要包括栈内存和堆内存。
GIS程序设计实验报告(c++).pdf
思考题解答:(1)内联函数与无参数的宏定义和普通函数的区别是什么?使用内联函数应注意什么问题?内联函数是一种特殊的函数,它可以在编译时将函数体展开,从而提高程序的执行效率。
C++中关于[]静态数组和new分配的动态数组的区别分析
与静态数组不同,`sizeof(a)`和`sizeof(*a)`都返回4字节,因为`a`在这里只是一个指向动态数组首元素的指针。
C++中用new创建二维数组和指针数组实例代码
new char[8];```这里,`pa`是一个指向`char`指针的数组,我们分配4个`char`指针,然后为每个指针分配8个`char`元素的空间。


