求能占满全部内存的C语言小型程序实现方案
C语言实现占满内存的程序方案
你给出的C++程序核心是通过循环不断分配小内存块直至耗尽系统内存,对应的C语言版本可以用标准库的malloc函数实现,代码如下:
#include <stdio.h> #include <stdlib.h> int main() { while (1) { // 每次分配int大小的内存,不做释放 void *ptr = malloc(sizeof(int)); // 可选:分配失败时提示并退出循环 if (!ptr) { printf("内存分配失败,已耗尽可用内存\n"); break; } } return 0; }
额外实现建议
- 更快耗尽内存:一次性分配更大的内存块(比如1MB),减少循环次数,提升内存占用速度:
#include <stdio.h> #include <stdlib.h> #define BLOCK_SIZE (1024 * 1024) // 定义1MB的内存块 int main() { while (1) { void *ptr = malloc(BLOCK_SIZE); if (!ptr) { printf("系统内存已耗尽\n"); break; } } return 0; } - 强制占用物理内存:部分操作系统会采用惰性内存分配策略(仅分配虚拟内存,不占用物理内存),如果需要真正占满物理内存,可以在分配后写入数据触发物理内存分配:
#include <stdio.h> #include <stdlib.h> #include <string.h> #define BLOCK_SIZE (1024 * 1024) int main() { while (1) { void *ptr = malloc(BLOCK_SIZE); if (!ptr) { printf("物理内存已耗尽\n"); break; } memset(ptr, 0, BLOCK_SIZE); // 写入数据让系统分配物理内存 } return 0; } - 注意:这类程序会耗尽系统可用内存,可能导致系统卡顿、无响应,建议仅在虚拟机或测试环境中运行,避免影响正常工作。
内容的提问来源于stack exchange,提问作者dhhdjdj bfjdjdfjfj
相关产品推荐
相关产品推荐

