讲教高手们 动态数组 使用上需要注意什么(10分)

  • 主题发起人 主题发起人 wq_quake
  • 开始时间 开始时间
W

wq_quake

Unregistered / Unconfirmed
GUEST, unregistred user!
这几天做一个IP协议重组的程序,需要用到链表还有指针动态数组等,关于动态数组的释放,很多人都提到各种方法。我查了些资料和看delphi关于动态数组的用法,总结如下,动态数组在内存的分配上和string类型一样,而指针不是,动态数组和字符串一样都是分配在堆上,同时动态数组和指针在用法上基本一样,动态数组实际是个指针。
以上就是我的一点想法,希望大家再谈谈用法上的一些技巧。
比如我遇到一个问题就是动态数组和指针等等之间的互换如何实现。
 
www.source520.com 再次更新近3万代码,全部免费免注册狂下载
 
动态数组呀
注意几点就行了感觉
1.数组从0开始,使用时用Higt来确定上标(有些情况例外)。
2.释放可以用SetLength(aa,0);
3.在函数中不能SetLength函数传递过来的动态数组。
4.SetLength太大的内存时可能存在内存溢出,如果数据很大(几百M),请尽量一次申请够大的内存,然后重用,重复的SetLength可能会带来内存溢出问题。
我使用时注意的就这几点,没出过什么问题。和指针互换用得比较少。Delphi的指针很少得用着显示调用的,都让Delphi隐式调用了。
C的话数组变量其实就是静态指针,用法完全一样的。
 
low() 和 high()
 
1.动态数组没有一个固定大大小或者长度
2.执行SetLength过程或者给其赋值时,会为这个动态数组(重新)分配内存。
3.下标是以0开始.
4.不能对一个动态数组变量使用使用操作符^.
5.动态数组变量比较时,是引用在比较.
 
多人接受答案了。
 
后退
顶部