4

我正在尝试创建像spoj.pl这样的编程法官。我必须测量 C/C++/Java 程序正在使用的时间和内存。我想为我希望执行的程序设置最大内存限制。你能建议我怎么做吗?

4

3 回答 3

1

为了分析时间和内存消耗,您可以使用 callgrind:http: //valgrind.org/docs/manual/cl-manual.html

于 2012-04-07T19:07:15.937 回答
1

系统-, where-, how-, what-,...- 依赖。


限制,即:

Linux 命令行: > $ ulimit -v NNN && ./tha_prog, $ man ulimit, $ ulimit -a.

Linux C 编码:> setrlimit()linux.die: setrlimit , opengroup: setrlimit

Windows: CreateJobObject,作业对象

那么问题也变成了限制什么。静态库与动态库等。


要配置文件:

Valgrind 与 callgrind,- 和即kcachegrind,+++。

于 2012-04-08T02:27:30.890 回答
0

在 Windows 上,您可以使用jobs,它们是内核对象,允许您对当前不在另一个作业中的任何进程进行沙箱处理。您可以应用所有不同类型的限制,包括最大处理时间和内存/工作集限制。

有几个步骤
1. 调用CreateJobObject以获取内核对象的句柄
2. 调用SetInformationJobObject以设置您的限制
3. 创建一个要对其施加限制的挂起进程
4.AssignProcessToJobObject使用作业和进程句柄调用
5. 恢复通过调用进程的主线程ResumeThread

于 2012-04-08T00:36:44.417 回答