如下:
short* f()
{
short* fbuffer=new short[100];
........
return fbuffer;
}
main
{
short *buffer=f();
......
delete buffer;
}
这样释放内存可以吗?用codeguard报告的警告就是分配和删除的方式不对应,程序可以照常运行。应该怎样做呢?
void f(short* &)
{
fbuffer=new short[100];
}
main
{
short *buffer;
f(buffer);
......
delete buffer;
}
这样做的运行结果没错,但是程序不易读,一旦你没有及时delete传回的指针,就会发生内存泄漏,大致这样做:
bool f(short* buf)
{
检查buf这指针的合法性
........
return 是否成功;
}
main
{
short *buffer=new short[100];
f(buffer);
delete buffer;
}