指针变量内存分配与释放的问题。(100分)

  • 主题发起人 主题发起人 zzutlink
  • 开始时间 开始时间
Z

zzutlink

Unregistered / Unconfirmed
GUEST, unregistred user!
我声明了一个指针数组,但由于在整个程序中都要使用所以不能立刻释放,那么我想问:
1、程序关闭后这部分资源会自动释放吗?
2、如果程序出现异常关闭了该部分资源会自动释放吗?
代码大致如下:
type
PString = ^string;
var
p:array of PString;
i:integer;
begin
..........
setlength(p,100);
for i:=0 to 99 do
begin
new(p);
......
end;
end;
 
程序关闭了所有的还没释放的动态分配内存都会
被系统强行释放。
 
那么我不用再考虑这个问题了是吗?直接用就行了?
 
可以这样用。
不过整个程序中都要使用最好声名成静态变量.
 
程序关闭时不会自动释放自定义指针,最好人工释放.
 
to xeem,独星之闪
你们两的意见好象有冲突,我不知道该如何了。
 
必须人工释放
 
必须人工释放
 
try

except

end
 
这点你可以放心:一个进程结束后它的所有内存空间(分配的和没分配的),都会被系统收回,
没释放的内存肯定被收回,只不过是被强行收回,而不是以你自己的方式。
 
同意 xeen , 进程内内存空间,无论你的程序是怎么申请的,进程结束后都会被操作系统收回. 甚至部分系统资源也会被操作系统自动回收.

只是,在编程习惯上,你自己分配的空间最好由自己显式收回,免的模块间相互影响,进程内内存浪费和混乱.
 
意思是不是说我应该把p:array of pstring定义成为全局的,然后在系统关闭前显式的释放?
 
由系统释放不行吗?
 
zzutlink, 你可以这样做.只要主意不要搞混进程内内存空间就成
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
915
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部