包含双重指针的结构体指针的分配内存与释放内存

最近在做基于多目标的蚁群算法在云计算的虚拟机放置的应用,涉及到具体实现过程时的数据结构时,经常需要设计出包含双重指针的结构体指针,而进行分配和释放内存时,会碰到多层开辟空间和不能完全释放内存的问题。如下面例子:

typedef struct Solution
{
int **bivX;
int *bivY;
int IsDominated;/0代表未被标记为dominated
}SolutionTotal;

SolutionTotal *STotal;

NA=10;
M=20;


/开辟空间

STotal=new SolutionTotal[M*NA];STotal是单指针

for(i=0;i {
STotal[i].bivX=new int*[numVM];///STotal[i].bivX是双重指针
for(j=0;j{
STotal[i].bivX[j]=new int[numHost];//STotal[i].bivX[j]是单指针
}
STotal[i].bivY=new int[numHost];STotal[i].bivY是单指针

}

///释放空间

if(STotal!=NULL)
{
for(i=0;i
{
for(j=0;jdelete []STotal[i].bivX[j];/从里释放到外,释放是数组时,delete []p
delete []STotal[i].bivX;
delete []STotal[i].bivY;/
}
delete []STotal;
}

从上面例子可以看出开辟内存是从外开辟到里面,而释放内存时从里面释放到外面,这样就可以保证内存不泄露!

你可能感兴趣的:(多重指针)