资 源 简 介
As we known that C can not define any unfix-length array.
For exmaple,
if you want to store a string, you must evalue its length, then define a char array with its size as length+1. But sometimes
we can not tell the length so exactly.
So this is the function of my progam. I realize it by using Bi-direction Link Table.
最近,我在研究网络程序,突然发现C语言原生数据的一个很要命的问题——必须提前声明使用内存的长度。
当然,C语言的这种要求是符合情理的,毕竟只有定长的变量才能放在函数的栈中。
可是网络上的数据一般不具有预知性,有时很大上百M,有时很小,可能也就几个字节。
于是,我想怎么样才能像其他语言那样实现对数据的不限长度的存取呢?
首先应该使用malloc函数把数据放在堆中。但是问题又来了。
malloc也是需要可以大小的。
于是,我陷入的困惑。终于,想到了大学期间学到的一门无聊的课程——《数据结构》。
先给这个可变长度的数组起个名字:Unfix Array,简称UFA。
UFA应该包含指向第一个UFA_entity和最后一个UFA_entity的指针,最好还有一个指向当前UFA_entity的指针。
每个UFA_entity应该包含前向和后向的指针,还要有一个指向数据的指针。