问:奇怪的指针问题(100分)

  • 主题发起人 主题发起人 HORNEY
  • 开始时间 开始时间
H

HORNEY

Unregistered / Unconfirmed
GUEST, unregistred user!
我在程序中使用了一个长度为64K(是长度,不是大小!)的数组指针,是DELPHI自己定义的
类型,使用时可以探查到其结构和数据,但是如果要对它写数据时就ACCESS VIOLATION,
但是在一个实验程序中又没有出现错误,两者唯一的不同就是后者代码很少,而前者已有
一定规模。如果不用指针的话,一进入使用这个数组的子程序就会STACK FLOW。
 
不用指针,你的数组将存在stack里,超过缺省的 64k 就溢出了,
除非你用 {$MAXSTACKSIZE xxx} 改变 stack 的大小。

使用指针,你的数组可以动态分配到 heap 里,一般不会溢出。
但是,你的错误信息是 Access Violation,可能是你没有分配对,可以这样
GetMem(指针变量,数组长度 * SizeOf(数组元素类型));
最后不要忘记 FreeMem(指针变量);
 
那为什么在前面短一点的程序里面就可以不用分配呢?
 
接受答案了.
 
后退
顶部