delphi 结构体的疑惑?解决方法

delphi 结构体的疑惑?
疑问一:

结构体1
type
  PTRecTest = ^TRecTest;
  TRecTest = record
  iAge:Integer;
  sName:array[0..29] of char;
end;

结构体2
type
  TRecTest = record
  iAge:Integer;
  sName:array[0..29] of char;
end;
PTRecTest = ^TRecTest;

这结构体1和结构体2有何区别?

疑问二:
结构体的内存申请与释放
procedure Test;
var
 PRecTest:PTRecTest;
begin
 new(PRecTest);
 PRecTest.iAge:=11;
 PRecTest.sName:='MyName';
 dispose(PRecTest);
end;
貌似这样没有问题,但是在有些函数里面显示的调用dispose(PRecTest)这句就会发生内存泄漏,比如把Test放到子线程中执行如果还是用dispose(PRecTest)的话就出现内存泄漏错误导致程序退出,用fastmm进行检查确实是发现UnKnown,这是为何?
像这样的:
var
 PRecTest:PTRecTest;
 什么时候显示调用dispose(PRecTest);什么时候不用显示调用dispose(PRecTest);















------解决方案--------------------
1.没区别,都是结构体指针
2.手动申请了内存,最好不用的时候要释放它

(当然你的计算机内存够大,还看不出来后果来,系统也会帮你回收,但它有个时间段
随着泄漏的内存越积越大,最终会令系统塴溃)
一般是谁申请谁负责释放,用在线程时,因为线程有可能未结束,所以可以让线程释放或者在关闭程序时释放

------解决方案--------------------
老大,你这问题数据和你的问题分数严重不太对应,刚上班忙。没细看

指针是用dispose进行释放的。难道是你线程中还在使用这个地址?