function abc:boolean;
  var
  arr:array [0..999] of integer;  
  begin
    code....
  end;改成 var
  fun_abc_arr:array [0..999] of integer;  
  
  function abc:boolean;
  begin
    fillchar(fun_abc_arr,sizof(fun_abc_arr),0);
    code....
  end;

解决方案 »

  1.   

    嘿嘿,你好像写反了,全局变量系统会帮你初始化,而函数中的变量,使用之前是需要手动初始化的至于效率,肯定是批量操作要比逐个操作快些,但是这也不一定,就FillChar来说,仅仅是你写的代码和汇编代码之间的区别,其实现方式也一眼上循环赋值
      

  2.   

    先谢谢 你的回复
    你可能没理解我的意思
    我是想说 abc 这个函数是 经常要用的  每次进 函数都分配里面的参数 我觉得 还不如 把这些参数 写到全局变量 里 每次 进函数 清理就是了 不用再分配空间
    之所以用 array [0..999] 是想说明 这个函数有很多 临时变量 对  堆 ZAI  不是很了解 有 愚昧的地方请多包涵
      

  3.   

    这种优化作用不是太大,有局部变量比没局部变量就多一句汇编码,请看函数汇编框架:push  ebp
    mov   ebp, esp
    sub   esp, 4000  // 多这一句汇编码,分配局部变量....pop   ebp
      

  4.   

    另外就是,delphi函数中的变量虽然是在栈中分配比较快,但是这块空间可是没有初试化。
    如果你声明了个字符数组,那么你在第一次使用这个数组之前,数组中的内容不一定都是 0 ,所以用的时候要小心点。