(AllocMem和GetMem)失败

时间:2014-08-20 19:53:09

标签: delphi winapi

可以分配的指针数量是多少?我正在开发一个函数,分配各种指针的各种指针。在未计算量(x)之后,AllocMem函数分配覆盖现有指针的指针。有人有提示吗?

function NewObject(ID: Integer): boolean;
Var P: PNewObject;
begin

P:= Allocmem(SizeOf(TNewObject));
P^.ID:= ID;
...

分配的指针只会在程序关闭时释放!

1 个答案:

答案 0 :(得分:6)

没有可分配的最大指针数。如果内存管理器无法找到合适的内存块,则动态内存分配可能会失败。在那种情况下,EOutOfMemory被提出。

  

在未计算金额(x)之后,AllocMem函数会分配一个覆盖现有指针的指针。

不,事实并非如此。动态内存分配函数永远不会返回已在使用的内存块。

听起来好像你的程序分配但从未解除分配。如果您手头有垃圾收集器,这可能是一种可行的方法,但对您来说情况并非如此。也许你需要考虑在完成内存后取消分配。