疑问一:结构体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);
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);
解决方案 »
- 我做的一个APP SERVICE 程序为什么托盘出现两个图标
- 手机做短信猫~~
- 心情郁闷,散分
- 如何实现网页检测程序是否安装
- ★★为什么imagelist第一次加入图片就可以第二次就不行呢???
- 如何控制Webbrowser中显示网页的元素呢?如:改变输入框的值或提交页面上的一个表单!!
- 看似简单,没人回答对的问题
- 100分! EXCEL 里怎么实现,通过下拉菜单选择另外一个EXCEL文件中某列的值
- 我是VC程序员,现在想学Delphi,请推荐几本经典的好书!
- SQL语句比较执行效率-----------请发言
- 【delphi】关于BOM价格计算的问题
- button 如何实现在pagecontrol逐个创建复选框
procedure Test;
var
PRecTest:PTRecTest;
begin
new(PRecTest);
PRecTest.iAge:=11;
PRecTest.sName:='MyName';
//...锁
ThreadList.addobject('',pointer(PRecTest));//ThreadList:Tstringlist;
//...解锁
//ThreadList是在线程中处理,这里只是添加对象数据
dispose(PRecTest);//一定出错,应该怎么释放?
end;
哪里来的.Free,你在骗小孩呢?
FreeMemory(PRecTest);这样还是出错导致程序退出。