在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
技术交流,DH讲解. 一句话,结构体里面,避免使用String,要使用Array[N..M] of char,或者String[N]. THuangJacky = record Age:Integer; FName:string; end; procedure TForm3.btn1Click(Sender: TObject); var A:THuangJacky; begin A.FName:='HuangJacky'; A.Age:=23; ShowMessage(A.FName); end; 没有错误,难道我危言耸听了..... THuangJacky = record Age:Integer; FName:string; end; PHuangJacky = ^THuangJacky; procedure TForm3.btn1Click(Sender: TObject); var A:PHuangJacky; L:TList; begin //先申请空间 New(A); //结构体指针可以省略后面这个^ A^.Age:=23; A.FName:='HuangJacky'; L:=TList.Create; try L.Add(A); ShowMessage(PHuangJacky(L[0])^.FName); finally //清除使用的内存. FreeMem(L[0]); L.Clear; L.Free; end; end; 运行没有问题啦,哈哈,可是在关闭程序的时候,如果开了内存泄漏或者用了其他工具就能报出有内存泄漏, THuangJacky = record Age:Integer; FName:string[23];//凑4的倍数,那为什么要23个呢?请看字符串 详解 end; PHuangJacky = ^THuangJacky; 这样果然不会内存泄漏了. procedure TForm3.btn1Click(Sender: TObject); var A:PHuangJacky; L:TList; begin //先申请空间 New(A); try //只要对内存进行了读写,最好用tryf来保证不泄露 //结构体指针可以省略后面这个^ A^.Age:=23; A.FName:='HuangJacky'; L:=TList.Create; L.Add(A); ShowMessage(PHuangJacky(L[0])^.FName); finally //清除使用的内存. A:=PHuangJacky(L[0]); //new 和 dispose是配对使用的,GetMem和FreeMem配对使用 //new() = GetMem() + Initialize() Dispose(A); L.Clear; L.Free; end; end;
严谨. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论