2.否则就只能通过动态申请内存空间(malloc)的办法来解决问题了。可以设计数组满了后重新申请一个两倍长度的数组,然后把原数组复制过去,再把指针指向新的数组,最后释放掉旧的内存空间。优点是不用担心数组容量问题(题主提出的主要问题);不浪费空空。但缺点也很明显:操作复杂;内存从堆(heap)中分配,有可能不够用了;必须手动分配和释放内存;速度慢。
因为我仅围绕数组来回答。所以还是有更多解决办法的:可参考其他大神的方法,用其它数据结构。在此不再重复了。
这个问题问的很好,目前我能想到的就是不用数组了,而是改用链表结构,或者更确切地说是使用alloc函数来构建一个链表。
与数组不同的是,数组的元素在内存中是一段连续的区域,而链表的结点在内存中是一段离散的区域,所以链表的操作效率比数组要差一点。
动态伸请内存。比如,装入一个文件到内存中,把文件的长度及数据类型(字符,结构,二进制数等)写入alloc函数中,并返回首地址指针给*ptr,就可以用了。对了vc十
十,都用new来伸请,方法同上。
浪费是不可避免的。但可以封装一个间接调用malloc的函数,在里面进行判断,如果超出再申请,没超出就从里面申请。其实这就类似操作系统的堆内存管理器了。