P
Pearl.
Unregistered / Unconfirmed
GUEST, unregistred user!
应该是delphi优化程序搞得鬼。 很简单就可以证明这点, 只要你把i定义为全局变量, 那么
k[0]:=100的确可以给i赋值。 但是在退出buttonclick时会报非法内存访问错。 这就是内存收集程序搞出来的了。
因为delphi认为你在过程中为k分配了内存。 所以在过程结束时delphi准备释放k这个局部变量了。[]
动态数组虽说本质上是指针, 但是它的内存管理已经由delphi自动控制了, 所以最好把动态数组当成一种普通类型类来使用(其实内存管理上动态数组和string很相似, 只是没有像string那样检查严格罢了)。
k[0]:=100的确可以给i赋值。 但是在退出buttonclick时会报非法内存访问错。 这就是内存收集程序搞出来的了。
因为delphi认为你在过程中为k分配了内存。 所以在过程结束时delphi准备释放k这个局部变量了。[]
动态数组虽说本质上是指针, 但是它的内存管理已经由delphi自动控制了, 所以最好把动态数组当成一种普通类型类来使用(其实内存管理上动态数组和string很相似, 只是没有像string那样检查严格罢了)。