如下这段代码示例,如何释放new所分配的空间.typedef struct _ModuleInfo{
CString ModuleName;
CString ModuleSerial;
}ModuleInfo, *pModuleInfo;CPtrArray m_ptrCellInfo; //成员对象pModuleInfo moduleinfo = new ModuleInfo[10];m_ptrCellInfo.Add(moduleinfo);((pModuleInfo)m_ptrCellInfo.GetAt(0))->ModuleName = "ModuleName";
((pModuleInfo)m_ptrCellInfo.GetAt(0))->ModuleSerial = "Serial00001";最后不用了,想释放这个new分配的空间如何做?
CString ModuleName;
CString ModuleSerial;
}ModuleInfo, *pModuleInfo;CPtrArray m_ptrCellInfo; //成员对象pModuleInfo moduleinfo = new ModuleInfo[10];m_ptrCellInfo.Add(moduleinfo);((pModuleInfo)m_ptrCellInfo.GetAt(0))->ModuleName = "ModuleName";
((pModuleInfo)m_ptrCellInfo.GetAt(0))->ModuleSerial = "Serial00001";最后不用了,想释放这个new分配的空间如何做?
delete ptr;
new对应delete
new []对应delete[]。虽然如果是非自定义类型,new[]对应delete也不会出错,不过最好别这样。http://www.chinaunix.net/jh/23/311058.html
pModuleInfo moduleinfo = (pModuleInfo)m_ptrCellInfo.GetAt(0);
delete [] pModuleInfo;
看看 C++的书
delete[] moduleinfo;
执行:
pModuleInfo moduleinfo = (pModuleInfo)m_ptrCellInfo.GetAt(i);(i是你要删除的那个元素)
delete [] pModuleInfo;
delete []ModuleInfo;
但CPtrArray 删除有它的机制啊
{
pModuleInfo pmodinf = (pModuleInfo)m_ptrCellInfo.GetAt(j);
ASSERT(pmodinf);
delete pmodinf;
}
m_ptrCellInfo.RemoveAll();希望来到这个论论的,在参与帖子的回复时要确定你讲的是对的,最好自行演练一下,回复的结果要具体,明确,详细一点.