一个内存泄露的极端例子
来源:互联网 发布:淘宝联盟部分退款返利 编辑:程序博客网 时间:2024/05/14 18:44
曾经写过一个尽可能占用内存的程序
// max malloc.c// 作者@GNU计划// 编译器 visual studio 2010// 若有疑问或发现BUG可留言#include <limits.h>#include <stdlib.h>int main ( void ){// 此处尝试把i存放在CPU寄存器内 现在的CPU应该可以放得下4bytes 也就是sizeof(unsigned long)的长度register unsigned long i = ULONG_MAX ; // unsigned long类型的最大值 ( 2^32 ) - 1long double *pointer ;unsigned char *ptr ;unsigned char j = 7 ; // sizeof ( long double ) - 1 ;//申请一个数组 数组的长度为( 2^32 ) - 1而每个数组单元的类型为long double也就是8bytes 即一次申请 ( 2^32 ) - 1 再乘8bytes的连续内存空间// while ( NULL == ( pointer = ( long double * ) malloc ( ( i * sizeof ( long double ) ) ) )while ( !( pointer = ( long double * ) malloc ( i << 3 ) ) ) // i左移3位即i乘2的3次方也就是i * 8而8就是sizeof ( long double ){if ( i ) // i > 0--i ; // 若申请空间失败那么减1个数组长度再申请 即减sizeof ( long )的值 也就是减8byteselse // i == 0 如果连一个数组单元空间都申请失败 即连续8bytes的内存空间都申请失败{// 既然8bytes失败那么申请一个7bytes的内存连续空间// while ( NULL == ( ptr = ( unsigned char * ) malloc ( j ) ) )while ( !( ptr = ( unsigned char * ) malloc ( j ) ) ){if ( j ) // j > 0--j ; // 若申请失败就再减1byteelse // j == 0 // 若1byte的内存空间都申请不了// 此处是死循环 为何用死循环?就是需要死循环因为一旦程序结束return 0了所有malloc的内存就都被编译器自动释放了continue ;}}}return 0 ;}
0 1
- 一个内存泄露的极端例子
- 一个COM内存泄露的例子
- 一个js内存泄露的好例子
- Java内存泄露的一个小例子
- 一个用poolmon查找内存泄露的例子
- Java 内存泄露的例子
- 【转】恐怖的C++语言——C++语言操作符重载的一个极端例子
- 一个Context内存泄露的例子(3.0后已修正)
- java内存泄露例子
- Java内存泄露例子
- 一个极端的前端国际化方法
- 修正了一个内存泄露的问题
- 一个常见的android内存泄露 问题
- 一个常见的android内存泄露 问题
- 一个典型的内存泄露程序
- 一个不经意的内存泄露问题
- 一个内存泄露问题的定位
- java 产生一个Java的内存泄露
- 术语(更新持续中。。。)
- 《算法概论》第一次作业回顾与反思
- CentOS最常用命令及快捷键整理
- N的阶乘末尾有多少个0
- ADO.NET学习笔记(五)
- 一个内存泄露的极端例子
- const setfill setw
- win8系统在安装软件时安装framework3.5失败的解决办法
- Android使用Fragment嵌套Fragment的方式实现界面滑动
- TOJ:1746. How many sums
- 牛津词典软件下载
- ADO.NET学习笔记(六)
- 什么是 “动态规划” , 用两个经典问题举例。
- 第一次接受打印出的发送方IP地址总是0.0.0.0;