当我在C ++中为我的大学课程制作链接列表时,我的教授告诉我们只使用:
bool Stack::full() const{
return false; //Assume infinite memory
}
我们在类(堆栈,列表,队列)中创建的数据结构的链表实现。
如果要将某些内容推送到堆栈并且堆栈正在使用最大内存量,这会导致应用程序崩溃或做一些奇怪的事情吗?
有没有办法检查链表是满的还是内存不足?或者通常只是假设链表不会增长到内存不足的大小?
答案 0 :(得分:2)
"内存不足"这是一个非常难以解决的问题......假设一旦你 内存不足,就不会有任何内存来处理错误。
除此之外:要么自己设置一个元素数量的上限(一个健康的事情要做!),否则系统会因为没有分配一些内存而警告你。
标准库容器已经这样做,并将检查此分配失败,并将抛出bad_alloc
异常。
这就是为什么你的教授也应该告诉你永远不要自己写堆栈,向量和列表,而是使用STL中的那些,然后开始解决实际问题:)
答案 1 :(得分:0)
首先使用malloc()
函数将内存分配给特定节点,如果malloc()
函数返回 NULL 值,则内存已满。