创设继承类 导致内存不足 求解!

创建继承类 导致内存不足 求解!!!
数据结构
class DeviceParam
{
public:
int    mlc;     
int    lmd;     
double  fenbianlv;
int    qlxz; 
double  kxiuzheng;
double  resistance1;
double  resistance2;
double  moliang;
double  bosongbi;
char   danwei[10];
};
class DeviceChannel:virtual public DeviceParam
{
public:
double  initialdata;
double  showdata;
public:
 DeviceChannel()
{
///初始化
}
void InitialVlaue(double mydata)//初始值
{
}
double ShowValue(BOOL plusFlag)
{
  return 数据; 
}

};
class DeviceMachine:virtual DeviceChannel
{
public:
DeviceChannel OneTD[CHANNEL_NUM];
void SetChannelData(double *m_data,int channel,int type)
{
}
void GetChannelData(double *m_data,int channel,int type)////一列数据所有通道
{
}
};
class DeviceData:virtual DeviceMachine
{
public:
int m_channel;
int m_machine;
char Time_Data[50];
DeviceMachine SB_TD_Data[MACHINE_NUM];
double PH_Value[MACHINE_NUM][CHANNEL_NUM];
public:
 void GetChannelNum(int num);
 BOOL SaveData(char time_data[],int machine,int channel, CString filepath);
 void PH_Zero();
 void WritePhZero(CString filePath);
 BOOL ReadPhZero(CString filePath);
 
};
在菜单中打开文件后
m_savenum=30000;
DeviceData *m_data=new DeviceData[m_savenum];//显示内存不足
怎样修改数据结构啊?


------解决方案--------------------
将类定义中的大数组改为指针,构造时new
试试看
------解决方案--------------------
类中的数组(如SB_TD_Data[MACHINE_NUM]  PH_Value[MACHINE_NUM][CHANNEL_NUM])都用指针吧,然后new吧。
------解决方案--------------------
引用:
Quote: 引用:

我创建多少个DeviceData 对象大小都是4,我的数据结构不对吧?

明显不对啊,你的代码是定义了一个指针,然后给这个指针分配了sizeof(DeviceData)x30000个byte的内存空间,你算算要分多大!

没说明白,不是你的数据结构不对,是你对指针理解错了。指针变量占用的空间大小是4个byte,但是后面的new操作时在为这个指针向系统申请可以使用的内存空间,这段内存空间的大小是sizeof(DeviceData)x30000,而且是要求连续的。