结构体 动态内存 操作
在vc 中定义比较大的结构体
假如
typedef struct _PAGE_INFO_T{
CString sName;
int iPageID;
int iData[0x100];
}m_page_t1;typedef struct _PAGE_INFO_T{
CString sName;
int iccID;
int iData[0x100];
}m_page_t2;typedef struct _DEV_INFO_T{
CString strDevName;
int iDevID;
int iMaxPage;
int iCurPage;
m_page_t1 *tp1;
m_page_t2 *tp2;
}m_test_t;定义 m_test_t g_testSrc;
并且对结构体 m_page_t1 *tp1; 动态分配内存.
g_testSrc.tp1 = new m_page_t1[10];
g_testSrc.tp2 = new m_page_t2[10]new 了以后,并且为结构体进行了赋值操作,都还正常,但是为什么delete 出错?
if(g_testSrc.tp1!=NULL)
{
delete []g_testSrc.tp1;
g_testSrc.tp1=NULL;
}
if(g_testSrc.tp2!=NULL)
{
delete []g_testSrc.tp2;
g_testSrc.tp2=NULL;
}
1.>怀疑是CString sName;的问题,但是不知道如何解决?如果不delete,而直接将g_testSrc.tp1指向其它地方,那之前的空间是不是自动销毁还是占用中?
在vc 中定义比较大的结构体
假如
typedef struct _PAGE_INFO_T{
CString sName;
int iPageID;
int iData[0x100];
}m_page_t1;typedef struct _PAGE_INFO_T{
CString sName;
int iccID;
int iData[0x100];
}m_page_t2;typedef struct _DEV_INFO_T{
CString strDevName;
int iDevID;
int iMaxPage;
int iCurPage;
m_page_t1 *tp1;
m_page_t2 *tp2;
}m_test_t;定义 m_test_t g_testSrc;
并且对结构体 m_page_t1 *tp1; 动态分配内存.
g_testSrc.tp1 = new m_page_t1[10];
g_testSrc.tp2 = new m_page_t2[10]new 了以后,并且为结构体进行了赋值操作,都还正常,但是为什么delete 出错?
if(g_testSrc.tp1!=NULL)
{
delete []g_testSrc.tp1;
g_testSrc.tp1=NULL;
}
if(g_testSrc.tp2!=NULL)
{
delete []g_testSrc.tp2;
g_testSrc.tp2=NULL;
}
1.>怀疑是CString sName;的问题,但是不知道如何解决?如果不delete,而直接将g_testSrc.tp1指向其它地方,那之前的空间是不是自动销毁还是占用中?
如何改好呢?
{
CString sName; //问题在这里!不能这样
char sName[32];//用这个!!!!!
int iccID;
int iData[0x100];
}m_page_t2; 为结构体进行了赋值操作:
CString str="就这样";
strcyp(tp1->sName, str);