我正在尝试创建像spoj.pl这样的编程法官。我必须测量C / C ++ / Java程序正在使用的时间和内存。我想为我希望执行的程序设置最大内存限制。能否请你建议我怎么做。
答案 0 :(得分:1)
为了分析时间和内存消耗,你可以使用callgrind: http://valgrind.org/docs/manual/cl-manual.html
答案 1 :(得分:1)
System-,where-,how-,what - ,...- dependent。
限制,即:
Linux命令行:> $ ulimit -v NNN && ./tha_prog
,$ man ulimit
,$ ulimit -a
。
Linux C编码:> setrlimit()
linux.die:setrlimit,opengroup:setrlimit
Windows:CreateJobObject
,Job Objects
然后问题也变成了限制。静态与动态库等。
简介:
Valgrind与callgrind, - 和kcachegrind,+++。
答案 2 :(得分:0)
在Windows上,您可以使用jobs,它们是内核对象,允许您对当前不在其他作业中的任何进程进行沙箱处理。您可以应用所有不同类型的限制,包括最大处理时间和内存/工作集限制。
有几个步骤
1.调用CreateJobObject
以获取内核对象的句柄
2.致电SetInformationJobObject
设置您的限制
3.创建要对其施加限制的暂停流程
4.使用作业和处理句柄调用AssignProcessToJobObject
5.通过调用ResumeThread