人为地限制C/C++内存使用

Pau*_*aul 14 c c++ memory-management

有没有办法轻松地将C/C++应用程序限制到指定的内存量(30 mb左右)?例如:如果我的应用程序试图完成将50mb文件加载到内存中,它将死/打印消息并退出/等.

不可否认,我可以不断检查应用程序的内存使用情况,但是如果我超过它就会因为错误而死亡会更容易一些.

有任何想法吗?

平台不是一个大问题,windows/linux /无论编译器.

dmc*_*kee 10

阅读ulimit有关unix系统的手册页.您可以启动可执行文件之前调用shell,或者(在手册的第3部分中)调用同名的API调用.

  • 请注意,`ulimit()`API已过时.你想要`setr​​limit()`. (4认同)

Jer*_*fin 7

在Windows上,您无法直接为进程的内存使用量设置配额.但是,您可以创建Windows作业对象,设置作业对象的配额,然后将该过程分配给该作业对象.


小智 5

覆盖所有 malloc API,并提供 new/delete 的处理程序,以便您可以预订内存使用情况并在需要时抛出异常。

不确定这是否比通过操作系统提供的 API 进行内存监控更容易/省力。


bst*_*rre 5

在bash中,使用ulimit内置:

bash$ ulimit -v 30000
bash$ ./my_program
Run Code Online (Sandbox Code Playgroud)

-v需要1K块.

更新:

如果要在应用程序中设置此项,请使用setrlimit.请注意,手册页ulimit(3)明确表示它已过时.