【发布时间】:2020-04-18 14:52:54
【问题描述】:
我正在尝试运行以下 C++ 代码,但出现此错误: 谁能帮我澄清一下为什么会出现这个问题 输入:input/text_4.txt 9
在抛出 'std::bad_alloc' what() 的实例后调用终止:std::bad_alloc 中止(核心转储) 在阅读了几个类似的线程后,解决方案是检查动态内存分配。但是,我的代码没有任何动态分配的内存
输入文件text_4.txt:
这是因为没有很多快乐的事情发生 在波德莱尔三个年轻人的生活中。
输入:input/text_4.txt 8
【问题讨论】:
-
你使用
std::vector。它是一个“动态数组”,可以根据需要动态分配和重新分配。 -
第一条评论告诉你怎么做。这是程序员在这种情况下应该做的第一件事。使用调试器找出问题的根源。
-
你有
unsigned found = filepath.find_last_of("/"),然后是filepath.substr(found + 1)没有检查found的值。如果filepath不包含“/”字符怎么办? -
一个可能的原因是您对
scale向量的访问之一超出范围。使用at()而不是operator[]会帮助您抓住这一点。
标签: c++ memory-management