教你“正确”运用malloc函数(附原理)

教你“正确”运用malloc函数(附原理)

视频第一处代码

#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;
}

视频第二处代码

#include<stdio.h>
int main(){
	while(1){
		char *a=malloc(1048576);
	}
}

注意

此实验有风险。

上述代码均为测试代码,可能包含了更详细的注释,与实际视频中的代码可能不同。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容