壹鲦热带鱼 - 系统风险
type: channel
link: https://tropical-fish.cn/tag/%E7%B3%BB%E7%BB%9F%E9%A3%8E%E9%99%A9/
items: 教你“正确”运用malloc函数（附原理）

教你“正确”运用malloc函数（附原理）
type: item
date: 2025-09-14T18:36:00+08:00
description: 提示建议结合https://www.bilibili.com/video/BV14st5z6EaA/?spm_id_from=333.1387.homepage.video_card.click进行使用[tabs][tab name="Code 1" active="true"]#include <windows.h> #include <stdio.h> // 自定义内存分配函数，替代malloc void* my_malloc(size_t size) { // 调用Windows API申请内存，MEM_COMMIT表示提交物理内存 return VirtualAlloc( NULL, // 让系统自动选择内存地址 size, // 申请的内存大小 MEM_COMMIT, // 提交内存（实际分配物理内存） PAGE_READWRITE // 内存页权限：可读可写 ); } int main() { printf("开始申请内存，按Ctrl+C可终止...\n"); // 无限循环申请内存，直到系统无法分配 while (1) { // 每次申请1MB内存 char* a = (char*)my_malloc(1048576); // 如果内存分配失败，说明系统资源已耗尽 if (a == NULL) { printf("内存分配失败，系统可能已接近崩溃\n"); // 短暂延迟后继续尝试，可能会触发系统不稳定 Sleep(100); } } return 0; }[/tab][tab name="Code 2"]#include<stdio.h> int main(){ while(1){ char *a=malloc(1048576); } }[/tab][/tabs]TAG此实验有风险。上述代码均为测试代码，可能包含了更详细的注释，与实际视频中的代码可能不同。