jwh*_*ock 29 c++ linux debugging memory-management
我有一个C/C++程序,可能会在内存不足时挂起.我们通过同时运行多个副本来发现这一点.我想在不破坏开发机器性能的情况下调试程序.有没有办法限制可用的内存,以便新的或malloc将返回一个NULL指针,比如说,请求500K的内存?
cho*_*ida 31
尝试转动问题并询问如何限制操作系统允许您的进程使用的内存量.
尝试查看http://ss64.com/bash/ulimit.html
试试说:ulimit -v
这是另一个有点旧的链接,但提供了更多的背景:http: //www.network-theory.co.uk/docs/gccintro/gccintro_77.html
一种方法是在malloc()周围编写一个包装器.
static unsigned int requested =0;
void* my_malloc(size_tamount){
if (requested + amount < LIMIT){
requested+=amount;
return malloc(amount);
}
return NULL
}
Run Code Online (Sandbox Code Playgroud)
你可以使用#define来重载你的malloc.
正如GMan所说,你也可以重载新的/删除操作符(对于C++的情况).
不确定这是最好的方式,还是你在寻找什么
哪个OS?对于Unix,请参阅ulimit -d/limit datasize,具体取决于您的shell(sh/csh).
您可以为malloc编写一个包装器,它在您想要的circonstance中返回一个错误.根据您的操作系统,您可以将其替换为实现的操作系统.