如何检查链表是否内存不足/已满?

时间:2016-07-22 05:21:06

标签: c++ data-structures

当我在C ++中为我的大学课程制作链接列表时,我的教授告诉我们只使用:

bool Stack::full() const{
   return false; //Assume infinite memory
}

我们在类(堆栈,列表,队列)中创建的数据结构的链表实现。

如果要将某些内容推送到堆栈并且堆栈正在使用最大内存量,这会导致应用程序崩溃或做一些奇怪的事情吗?

有没有办法检查链表是满的还是内存不足?或者通常只是假设链表不会增长到内存不足的大小?

2 个答案:

答案 0 :(得分:2)

"内存不足"这是一个非常难以解决的问题......假设一旦你 内存不足,就不会有任何内存来处理错误。

除此之外:要么自己设置一个元素数量的上限(一个健康的事情要做!),否则系统会因为没有分配一些内存而警告你。

标准库容器已经这样做,并将检查此分配失败,并将抛出bad_alloc异常。

这就是为什么你的教授也应该告诉你永远不要自己写堆栈,向量和列表,而是使用STL中的那些,然后开始解决实际问题:)

答案 1 :(得分:0)

首先使用malloc()函数将内存分配给特定节点,如果malloc()函数返回 NULL 值,则内存已满。