新版主问题之1:BCB的内存管理
yesry 2004-04-12 10:46:11 出于“内存泄漏,内存自动回收”等目的考虑,对于BCB的内存管理作了一番研究,但是效果甚微。大家说一下应该如何实现像JAVA一样的内存自动回收?如何保证读写内存不超界?
//全局定义
TMemoryManager MyMemMMM,OldMem;
//我的内存管理
void * __fastcall MyGetMem(int iSize);//分配新内存
int __fastcall MyFreeMem(void *p);//释放
void * __fastcall MyReallocMem(void *p, int iSize);//从新分配
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
GetMemoryManager(OldMem);
MyMemMMM.GetMem=MyGetMem;
MyMemMMM.FreeMem=MyFreeMem;
MyMemMMM.ReallocMem=MyReallocMem;
SetMemoryManager(MyMemMMM);
}
//---------------------------------------------------------------------------
void * __fastcall MyGetMem(int iSize)//分配新内存
{
//return LocalAlloc(LPTR,iSize);
return OldMem.GetMem(iSize);
}
int __fastcall MyFreeMem(void *p)//释放
{
//LocalFree(p);return 0;
return OldMem.FreeMem(p);
}
void * __fastcall MyReallocMem(void *p, int iSize)//从新分配
{
//MyFreeMem(p);return MyGetMem(iSize);
return OldMem.ReallocMem(p,iSize);
}