请问关于内存释放有关问题

请教关于内存释放问题!程序如下:cout ------------After5Secondsstart------------- endlsleep(5)

请教关于内存释放问题!
程序如下:

cout   < <   "------------After   5Seconds   start------------- "   < <   endl;
sleep(5);
cout   < <   "------------create   Packet   start------------- "   < <   endl;
for   (int   i   =   0;   i <3000000;   i++)   {
char*   xx   =   new   char[1024];
if   (i%100000   ==   0)   {
cout   < <   "------Now   create------- "   < <i   < <   endl;
sleep(2);
}

if   (xx   =   NULL)   {
cout   < <   "-------new   failer------- "   < <i   < <   endl;
break;
}  
delete   xx;
}
cout   < <   "------------create   Packet   finish------------- "   < <   endl;

sleep(20);


执行前内存状况:
Mem:       1034420k   total,       153768k   used,       880652k   free,           4268k   buffers
Swap:     2031608k   total,       140840k   used,     1890768k   free,         33720k   cached

执行后内存状况:
Mem:       1034420k   total,     1001564k   used,         32856k   free,             132k   buffers
Swap:     2031608k   total,     2031608k   used,                 0k   free,           9224k   cached
大概执行了290万次以上吧,操作系统自动把程序关掉。

执行纪录如下
[tou-h@loadtester-03   bin]$   ./dst2_d
------------After   20Seconds   start-------------
------------create   Packet   start-------------
------Now   create-------0
------Now   create-------100000
------Now   create-------200000
------Now   create-------300000
------Now   create-------400000
------Now   create-------500000
------Now   create-------600000
------Now   create-------700000
------Now   create-------800000
------Now   create-------900000
------Now   create-------1000000
------Now   create-------1100000
------Now   create-------1200000
------Now   create-------1300000
------Now   create-------1400000
------Now   create-------1500000
------Now   create-------1600000
------Now   create-------1700000
------Now   create-------1800000
------Now   create-------1900000
------Now   create-------2000000
------Now   create-------2100000
------Now   create-------2200000
------Now   create-------2300000
------Now   create-------2400000
------Now   create-------2500000
------Now   create-------2600000
------Now   create-------2700000
------Now   create-------2800000
------Now   create-------2900000
強制終了
[tou-h@loadtester-03   bin]$
请问程序中我已经释放了内存,为什么还会消耗掉所有内存?
请高人解释!!谢谢!




[解决办法]
new和delete要配对。你new char[1024]就该用delete[] xx
[解决办法]
delete[] xx;
------解决方案--------------------


char* xx = new char;
delete xx; //单个对象的空间, 使用 delete 释放

or:

char* xx = new char[1024];
delete[] xx; //连续多个对象的空间,使用 delete[] 释放
[解决办法]
char* xx = new char[1024];
if (i%100000 == 0) {
cout < < "------Now create------- " < <i < < endl;
sleep(2);
}

if (xx = NULL) {
cout < < "-------new failer------- " < <i < < endl;
break;
}
//delete xx;
delete [] xx;
用delete xx只释放xx指针空间,delete [] xx才会释放全部空间
[解决办法]
有些……的编译器在
int a= new int[1024];
delete a;时会报警告,有些则会忽略过去(只free开头一个单元),有些支持这样流氓的方言
但是标准是不建议的数组就要用delete[],单个就要用delete
具体为什么会产生这样的问题要看分配器的设计,有些会保存一个THUNK在首(或者尾)来监视释放过程,这个THUNK通常记录了分配时的大小或者有一些溢出保护之类,所以有些编译器在delete a;这样的释放中参考了这个thunk而得过且过了,但是这是不负责的行为。

……不知道为什么会说那么多………………
[解决办法]
已经解决了,蹭分
[解决办法]
应该用 delete []xx; xx = NULL;

没有设置为NULL只是让xx成为野指针,确实很危险,但是接下来不会耗尽所有内存