gpt4 book ai didi

c - 内存泄漏使用 malloc 失败

转载 作者:IT王子 更新时间:2023-10-29 00:52:31 24 4
gpt4 key购买 nike

我正在编写一个程序来泄漏内存(主内存)以测试系统在低系统内存和交换内存下的行为。我们正在使用以下定期运行并泄漏内存的循环

main(int argc, char* argv[] )  
{
int arg_mem = argv[1];

while(1)
{
u_int_ptr =(unsigned int*) malloc(arg_mem * 1024 * 1024);

if( u_int_ptr == NULL )
printf("\n leakyapp Daemon FAILED due to insufficient available memory....");

sleep( arg_time );
}

}

上面的循环运行了一段时间并打印消息“leakyapp Daemon FAILED due to insufficient available memory...”。但是当我运行命令“free”时,我可以看到运行这个程序对主内存或交换空间都没有影响。

我做错了什么吗?

最佳答案

在您实际写入之前,物理内存不会提交给您的分配。

如果您的内核版本在 2.6.23 之后,请使用带有 MAP_POPULATE 标志的 mmap() 而不是 malloc():

u_int_ptr = mmap(NULL, arg_mem * 1024 * 1024, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_POPULATE, -1, 0);

if (u_int_ptr == MAP_FAILED)
/* ... */

如果您有较旧的内核,则必须触摸分配中的每个页面。

关于c - 内存泄漏使用 malloc 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3500178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com