在某些编程竞赛中,问题有内存限制(如64MB或256MB)。如何用bash命令理解我的程序(用C ++编写)使用的内存?有没有办法限制程序使用的内存?如果程序使用的内存超过限制,程序应该终止。
答案 0 :(得分:4)
命令top将为您提供所有正在运行的进程以及当前内存和交换的列表,或者如果您更喜欢GUI,则可以使用系统监视器应用程序。
至于锁定内存使用情况,您始终可以使用ulimit -v设置进程的最大虚拟地址范围。如果他们试图获得比设置限制更多的内存,这将导致malloc及其好友失败。
答案 1 :(得分:1)
根据您要投入的工作量,您可以查看getrusage(),getrlimit()和setrlimit()。出于测试目的,您可以在程序开始时调用它们,也可以在父进程中设置它们,并在孩提时将您的竞赛程序分开。当你提交你的节目以供比赛考虑时,请免除它们。
答案 2 :(得分:1)