有一个数组ArrStr[5],最大索引为4(从0开始),如: ArrStr[4] := '我是第四个数组成员';
如果用SetLength(ArrStr, 4);即减少最后一个成员.请问ArrStr[4]这个最后成员的内存是否被释放?

解决方案 »

  1.   

    procedure SetLength(var S; NewLength: Integer);
    S is a string or dynamic-array variable.
    如果你的数组ArrStr[5]是静态定义的,应该不可以
      

  2.   

    SetLength是针对字符串或动态数组操作的,如果动态缩小数组的长度,编译当然会清理内存。
      

  3.   

    如果 ArrStr 是以这种方式定义的:ArrStr: array of string,才可能使用SetLength。
    另外,看来你的ArrStr的数组元素是string型,是可以自动释放内存的。但如果是指针或对象,则不会自动释放。