【发布时间】:2013-12-09 10:32:32
【问题描述】:
我制作了一个基于带有节点的链表的程序,该链表通过指针链接在一起。每个节点都保存一个整数,该整数存储一个数字和一个指向下一个节点的指针。队列遵循先进先出。
一切似乎都很完美!我可以将新节点添加到队列中,也可以删除节点——所有这些都按 FIFO 顺序进行。
该程序是关于动态内存分配的(使用 malloc 和 free 库函数)
那么我的问题是什么?问题是内存是如何工作的,即当这些节点存储在堆上时 - 为什么节点以以下方式存储。
1 (205888)
2 (206032)
3 (206888)
4 (206904)
5 (215896)
6 (215912)
7 (215928)
这是程序的输出。第一个是存储的整数,括号是节点的地址。
所以 - 查看节点 5 的地址并将其与早期节点进行比较 - 内存中似乎发生了一些事情 - 如果字节数增加了千字节 - 从 206904 到 215896。
为什么会出现这样的跳跃?它有什么含义?真的会是内存泄漏吗? 还是以这种方式操作系统和编译器组织内存分配???
【问题讨论】:
标签: c struct memory-management linked-list heap-memory