zhazesheng @ 2024-11-28 22:48:33
请问在完成代码后怎么判断是否MLE (有好几次我这里信誓旦旦打完代码后最后MLE了)
by oldye @ 2024-11-28 23:01:33
首先,数组开的太大可能会导致MLE(比如开了个10000*10000的二维数组,等等),int类型最大可以开1.6e8左右大小的数组(512MB),所以像上面那样的数组会超出内存限制。
其次,看一看STL容器有没有可能导致内存超限。由于这类容器不能显式地看出其占用内存大小,所以我们写代码时通常会不加注意。比如写BFS求最短路,用STL的队列维护BFS时,就有可能导致内存超限。
还有,当程序出现无穷递归时,有时可能以MLE的形式报错,而不是CE(亲测)。
应该就这些了吧
by LionBlaze @ 2024-11-28 23:04:46
@oldye 冷知识:
by LionBlaze @ 2024-11-28 23:05:06
显然无穷递归不会 CE。
by Joe2011 @ 2024-11-28 23:21:42
bool be;
...//变量
bool nd;
cerr<<(&nd-&be)/1024.0/1024;
by Joe2011 @ 2024-11-28 23:21:58
@zhazesheng
by Wzhone @ 2024-11-29 08:17:42
@zhazesheng一个办法是像上面的在程序内部输出(但是看不了栈空间),另外一个可以用time看(仅linux,但是是实际内存和CCF看的不一样,详见这个帖子)