C语言 链表存储在哪个内存区域



当我们创建一个链表时,它存储在哪个内存区域堆栈或堆?假设我们正在创建一个有10个节点的单链表。那么所有的节点都存储在stack或者heap中还是我们可以存储在heap或者stack中的任意一个?

大多数数据结构是为了有效地利用内存。如果您创建一个带有堆栈变量的链表,它将提供预期的结果,但这并不意味着内存得到了正确的利用。假设堆有5(1000)个大小为10byes &而且没有超过20字节的内存存在争议。在这种情况下,用户希望分配100字节的内存,但是没有100字节的有争议的内存。在这种情况下,用户可以选择链表数据结构,为10次分配10字节的内存。链表提供了管理多个小块(称为节点)的机制。

链表是使用动态内存分配创建的,例如malloc。动态内存分配是从堆中进行的。堆是包含系统中所有空闲内存的全局资源。堆作为未使用内存块的链表来处理,即所谓的free-list。

最新更新