编码情景是要动态分配个数不确定的非内嵌类型对象,把获取的对象指针都存在一个数组里面,留待其他地方使用.
定义指针 CBase** m_pMotion;
个人偏向于用new/delete关键字,当然也可以用malloc/free函数组合来进行内存的分配和释放
分配内存, nHWNo是外部传递的参数
m_pMotion = new CBase*[nHWNo];
for (int ni = 0; ni < nHWNo; ++ni)
{
m_pMotion[ni] = new CMotionBase;
}
释放内存
if(m_pMotion != NULL)
{
for (int ni = 0; ni < nHWNo; ++ni)
{
delete m_pMotion[ni];
m_pMotion[ni] = NULL;
}
delete[] m_pMotion;
m_pMotion = NULL;
}
这里要注意new/delete 和 new[]/delete[] 的配对使用.相关内容可以看我很早以前的一篇文章https://blog.csdn.net/yishang44/article/details/49231621
有些人对于CBase**,或者说对于指针有着抵触,实际上,在这种情况下可以用std::vector<CBase*>之类的容器来实现。
把CBase*当成对象类型来处理就可以了。在释放的时候,注意std::vector<>::clear()是不会帮忙释放CBase*的内存,
需要手动来遍历释放。
这里就个简单的一维指针数组的分配,多维情况本人还没碰到.以后碰到再写吧.