先看段代碼:
沒有對myserver和list對象進行釋放,主要是能夠訪問push進去的數據,只作爲測試,對於多少個元素,要在堆上分配多少個元素;
#include <iostream.h>
#include "list"
using namespace std;
struct server
{
char * sch;
char * ip;
int port;
};
typedef list<server*> serverlist;
struct area
{
char * my;
serverlist mylist;
};
typedef list<area*> arealist;
arealist myarealist;
list<area*>::iterator pstrlist;
server *myserver = new server[3];
void main()
{
area myarea[2];
for (int i=0; i<2; i++)
{
if(i==0)
myarea[i].my = "十三鄉";
else
myarea[i].my = "七裏鄉";
for (int u=0; u<3; u++)
{
myserver[u].sch = "test";
myserver[u].ip = "192.168.1.25";
myserver[u].port = 8000+u;
myarea[i].mylist.push_back(& myserver[u]);
}
myarealist.push_back(& myarea[i]);
}
pstrlist = myarealist.begin();
for(; pstrlist!=myarealist.end(); pstrlist++)
{
cout<<*pstrlist<<endl;
}
}
調試運行結果(VC6.0):
爲了訪問元素不應對myserver進行釋放。當釋放list之時,要對myserver進行釋放。