怎样给数组分配内存
我需要给大量的数组(每个数组很短)分配内存,有没有像针对字符串的newstr函数类似的针对数组的函数,如有该怎样使用呢? 问题点数:20、回复次数:7Top
1 楼baiduan(-_-化杯粪喂力量-_-)回复于 2006-03-03 13:01:08 得分 5
SetLength(var S; NewLength: Integer);
setlength(array1,1);
注意最好zeromemory(@array1,sizeof(array1))初始化。Top
2 楼dinglinger(小呆之家)回复于 2006-03-03 13:20:50 得分 5
var
test:array of byte;
const
len=64;
get memory
setlength(test,64);
//---free memory
test:=nil;Top
3 楼yyfhz(火山)回复于 2006-03-03 14:58:06 得分 5
dinglinger(红辣椒)
//---free memory
test:=nil;
======================================================================
这样就可以释放数组占用的空间了吗?还是仅仅释放了指向数组的指针test的空间啊?
记得在很久以前,是这么写的
setlength(test,0);
test:= nil;Top
4 楼alpsgem()回复于 2006-03-03 16:41:04 得分 0
不好意思再追问一个问题,那怎么给结构体(记录)像这样分配内存呢,两个结构体或者两个数组怎样比较是否一样呢,是要用Record1.Item=Record2.Item这样的格式么?Top
5 楼bluekitty(软件黑领)回复于 2006-03-03 17:01:16 得分 5
动态数组是生存期自管理的,离开作用域自己释放。
结构(记录)在d里是不用手动分配内存的,这点和c不一样,至于比较就要看比较标准了Top
6 楼alpsgem()回复于 2006-03-05 22:47:22 得分 0
还是不行呀,我定义了一个全局的记录,如下
PIPChn = ^IPChn;
IPChn = packed record
IPItem : IP;
PortItem : word;
Next : PIPChn;
然后希望用它做个链表,我用一个PIPChn型的指针每次为新的节点分配IPItem和PortItem的内存,但所有的操作总是对着一个内存单元的,怎样才能每次都让指针指向我新分配的单元操作呢?谢谢!Top
7 楼yyfhz(火山)回复于 2006-03-06 09:09:47 得分 0
你把代码贴上来看看呀,D是可以这么干的,你大概是哪里弄错了。Top




