自定义数据结构:内存分配与链表应用
在编程中,我们常常需要处理各种数据,合理地管理内存和选择合适的数据结构至关重要。下面将详细介绍如何分配自己的内存以及使用链表这种高效的数据结构。
1. 数组在内存分配上的局限性
数组是一种常用的数据存储方式,但它存在一个明显的局限性,即数组的大小在定义时就必须确定,而且后续无法动态调整。例如,下面的代码定义了一个包含 5000 个 DVDInfo
结构体的数组:
#define kMaxDVDs 5000
struct DVDInfo myDVDs[ kMaxDVDs ];
无论我们实际使用这个数组来跟踪 1 张 DVD 还是 5000 张 DVD,它都会占用 2,565,000 字节的内存。如果我们预先知道数组所需的元素数量,使用数组是可行的。但在 DVD 跟踪程序中,使用数组就不太实际了。比如,我们的 DVD 收藏可能只有一张随 DVD 刻录机附带的测试 DVD 和一张罕见的《盖里甘的岛》花絮盗版碟,此时使用一个能容纳 5000 个结构体的数组就显得过于浪费。更糟糕的是,如果我们的 DVD 数量超过 5000 张,无论我们为 kMaxDVDs
选择什么值,都有可能不够用。
综上所述,数组在灵活性方面存在不足,无法满足我们的需求。我们需要一种方法,能够在需要时为我们提供恰好大小为 DVDInfo
结构体的内存块,这就涉及到动态内存分配。
2. 动态内存分配的重要性
动态内存分配是一项非常重要