![]() |
1
4
你也可以用 Valgrind 或者它的一个 Windows replacements 查找泄漏/溢出。 |
![]() |
2
5
描述中的一个可能原因是,由于代码中的错误,您试图分配一个大小不合理的块。像这样的东西;
现在如果
所以,这可能不是因为你的程序内存不足,而是因为它试图分配更多的内存,即使是在最好的条件下也不可能。 |
![]() |
3
1
只是一种预感, 但我在过去分配数组时遇到了麻烦
当尺寸很大时。 解决方案是用新的运算符分配
我发现这非常令人困惑,原因是Martin York的解决方案中讨论的堆栈框架: Is there a max array length limit in C++? 一切顺利, 汤姆 |
![]() |
4
1
使用检查机器上其他进程的配置文件
Process Explorer
从sysinternals-您将得到
使用检查自己的内存使用情况
umdh
获取快照并随时间比较使用情况配置文件。您必须在周期的早期执行此操作,以避免炸毁工具,但是如果您的进程的行为没有随着时间的推移而降低(即没有突然的病理行为),那么您应该及时获得有关其内存使用的准确信息
|
![]() |
5
0
另一个长远目标是:你不会说在三个操作中哪一个出错(构造,
如果是这样的话,并且如果您在第一天就使用了该函数(没有意外),那么您可以将stringstream设置为一个静态变量并重用它。据我所知,stringstream在其生命周期中不会释放它的缓冲区空间,因此如果它在第一天建立了一个大缓冲区,它将从那时起继续拥有它(为了增加安全性,您可以在它第一次构造时通过它运行一个5Kb的伪字符串)。 |
![]() |
6
0
我不明白为什么一条小溪会抛掷。你没有一堆失败的过程吗?或者可能附加一个调试器来查看分配器试图分配什么?
但如果你真的超负荷
只有我的两个(欧元)cts。。。 一。分裂?内存可能是碎片。 有一次,您尝试分配大小字节,但分配器在内存中找不到连续的大小字节块,然后抛出一个错误的分配。 注意:这个答案是在我读之前写的,排除了这个可能性。 2。签名与未签名?另一种可能是对要分配的大小使用带符号的值:
如果
由于符号积分在用户代码中很常见,如果仅用作无效值的负值(例如,-1表示搜索失败),则这是一种可能性。 |
![]() |
7
0
|
![]() |
8
-1
举例来说,当您使用
或者,换句话说,当你分配一个内存块而忘记释放它时。 |
![]() |
Cauterite · 对于XP上的控制台窗口,SetProp()失败 9 年前 |
![]() |
Coder92 · 应用程序不会在windows xp上运行 10 年前 |
|
Desh · 使用XAMPP在WindowsXP上出现TYPO3安装错误 11 年前 |
![]() |
ilhan · 带GUI的便携式SVN[关闭] 12 年前 |