重新设定数组长度会导致占用其他变量的空间?(50)

  • 主题发起人 主题发起人 programsky
  • 开始时间 开始时间
P

programsky

Unregistered / Unconfirmed
GUEST, unregistred user!
因为开始无法确定要保存多少数值,我在循环体中加入了一句setlength对动态数组的长度进行操作,然后这段程序运行就不正常了,发现一些变量的内容发生变化,调试的结果显示,这正是setlength造成的那么引发了标题的问题
 
LZ确定是setlength的问题么?按照Delphi里对动态数组的内存模型来看是不应该出现这种现象的啊!LZ能不能把出问题的代码贴出来看看?小弟也想学习一下
 
SetLength应该不会,但如果你当前设置的数组范围是 0..3,此时给 数组[4] 元素赋值,会导致其它变量的值改变。
 
当你改变它的长度后,对应值是不变的,除非你重新对它赋值了.
 
循环体中加入了一句setlength对动态数组的长度进行操作很危险的写法 在循环之前尽量分配一个够大的空间好些
 
不会出现的,可能是你在其他地方有问题,还可以用:Type _YouArr=Record A:word
... ... End
YouArr=Array[1..1000] Of _YouArr;Var ArrPt : ^YouArr;begin GetMem(ArrPt)
ArrPt[1].A:=;;;;
FreeMem(ArrPt);end;
 
如果一定要放不定长度的东西我建议你用容器不要用动态数组
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
911
SUNSTONE的Delphi笔记
S
后退
顶部