[問題] 二維陣列記憶體配置及回收
請教各位一個問題二維陣列回收的問題,我的程式常常到解構delete[] REC_MIR[i];就會跳出錯誤訊息
記憶體配置跟釋放的方法應該沒有錯,就是不太懂問題出在哪,麻煩各位大大指教!!
lib.h
class atdf_header
{
public:
atdf_header(); //default constructor
~atdf_header(); //destructor
protected:
char **REC_FAR;
char **REC_MIR;
char **REC_PIR;
};
class atdf_file :public atdf_header
{
public:
atdf_file(); //default constructor
~atdf_file(); //destructor
private:
ofstream atdffile;
}
lib.cpp
#include "lib.h"
#define STRLENGTH 50
#define FAR_SIZE 4
#define MIR_SIZE 38
#define PIR_SIZE 2
atdf_header::atdf_header()
{
/****** FAR dynamic memory allocation ******/
REC_FAR=new char*[FAR_SIZE];
for(int i=0;i<FAR_SIZE;i++)
REC_FAR[i] = new char[STRLENGTH];
for(int i=0;i<FAR_SIZE;i++)
*(REC_FAR+i)="";
/****** MIR dynamic memory allocation ******/
REC_MIR=new char*[MIR_SIZE];
for(int i=0;i<MIR_SIZE;i++)
REC_MIR[i] = new char[STRLENGTH];
for(int i=0;i<MIR_SIZE;i++)
*(REC_MIR+i)="";
/****** PIR dynamic memory allocation ******/
REC_PIR=new char*[PIR_SIZE];
for(int i=0;i<PIR_SIZE;i++)
REC_PIR[i] = new char[STRLENGTH];
for(int i=0;i<PIR_SIZE;i++)
*(REC_PIR+i)="";
}
//-----------------------------------------
atdf_header::~atdf_header()
{
/********* FAR free memory*********/
for(int i=0;i<FAR_SIZE;i++)
delete [] REC_FAR[i];
delete [] REC_FAR;
/********* MIR free memory*********/
for(int i=0;i<MIR_SIZE;i++)
delete[] REC_MIR[i]; //---------------------->出問題地方
delete[] REC_MIR;
/********* PIR free memory*********/
for(int i=0;i<PIR_SIZE;i++)
delete[] REC_PIR[i]; //---------------------->有時候Error也在這
delete[] REC_PIR;
}
main.cpp
int main(int argc, char* argv[])
{
atdf_file test;
system("pause");
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.210.112.66
→
10/29 10:47, , 1F
10/29 10:47, 1F
→
10/29 10:52, , 2F
10/29 10:52, 2F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 6 篇):