所以,我需要一些帮助。我正在使用 C++ 开发一个项目。但是,我想我已经设法破坏了我的堆。这是基于我将 an 添加std::string
到一个类并为它分配另一个值的事实std::string
:
std::string hello = "Hello, world.\n";
/* exampleString = "Hello, world.\n" would work fine. */
exampleString = hello;
我的系统因堆栈转储而崩溃。所以基本上我需要停下来检查我所有的代码和内存管理的东西,找出我搞砸的地方。代码库仍然很小(大约 1000 行),所以这很容易做到。
尽管如此,我还是对这种东西感到头疼,所以我想我会把它扔在那里。我在 Linux 系统上使用valgrind
,虽然不完全知道我在做什么,但它确实报告了std::string
' 的析构函数是无效的。我不得不承认从谷歌搜索中得到了“堆损坏”这个词;任何关于这类东西的通用文章也将不胜感激。
(在之前rm -rf ProjectDir
,在 C# 中再次执行:D)
编辑:我还没有说清楚,但我要的是诊断这类内存问题的建议。我知道 std::string 的东西是正确的,所以这是我做过的事情(或者是一个错误,但 Select 没有问题)。我确信我可以检查我编写的代码,你们非常聪明的人很快就会发现问题,但我想将这种代码分析添加到我的“工具箱”中,就像它一样。