很容易的问题,200分,要的快进来啊(200分)

  • 主题发起人 主题发起人 dyzgd
  • 开始时间 开始时间
D

dyzgd

Unregistered / Unconfirmed
GUEST, unregistred user!
type tobject2 = record
name: string[100];
id: integer;
x: integer;
y: integer;

end;


var object2: array[0..1000] of tobject2; //全局变量
在过程中会一直给该数组变量贬值,现在问题出现了,但程序运行20分钟左右后,用内存清理的程序发现,可用内存为0,清理后才正常,也就是说我这个程序会产生大量的内存碎片,不知道是什么原因,在XP就没有此问题。请大家帮忙,查一下原因。
 
没有释放
 
要怎么释放啊
 
可能是系统泄漏内存
 
你怎样使用这个结构的?
另:name: string[100]; 用意是什么?导致错误的原因可能出于这个成员的错误处理。
 
应该不会,name第一了一个100个字节的变量
还是用工具跟踪一下系统是用内存的情况
 
不会到0这么夸张吧?你给出的参数,内存使用量并不很大啊。
如果你用动态数组就可以释放。
var
object2:array of tobject2;
申请、释放都用setlength。

你期它的代码会不会有问题?
 
长度100的字符串啊,难道不行吗,用PCHAR???
 
我的程序中共定义了10几个这样的结构数组,这个是最大的为,其他的都是200左右,而且当内存少了以后,机器会变得很慢
 
如果你的程序只需要一个长度为100字节的字符串,只需要这样定义:
name: array [0..99] of char;
使用:
name := 'ABCDEFG';

string[100]; 的做法我原来以为等同于array [0..99] of string(我对Delphi有些生疏了),
后来翻了一下帮助,它是旧的Delphi数据类型,应该相当于前者吧。

关键就看你是怎样使用的了,贴出使用部分的代码吧,不用太长,只要关键部分就行。
 
后退
顶部