我的CPP之路

路漫漫其修远兮
随笔 - 42, 文章 - 0, 评论 - 16, 引用 - 0
数据加载中……

malloc小记_1

用malloc获取空的内存的地址,(malloc不会真正占用内存,真正占用内存的是初始化数据。)再进行数据填充,即占用内存,运行了下,发觉当内存用完的时候得出的占用内存大小不一样,明明占了将近1.5个GB,可是就是显示占了90多MB,而且两次pause都没出现就结束了,暂时想不通,如果哪位GGJJ知道的话请回复,小弟谢过了。(在taskmgr.exe中观察,呵呵,总算把2GB的内存都用了,直至弹出“虚拟内存不足的对话框”。)

以下为源代码:

#include <stdio.h>

void occupy(void *);

int main() {
    unsigned 
long ram = 0, ramDelta = 0, ramMb = 0, ramShow = 0;
    ramDelta 
= sizeof(char);
    printf(
"sizeof(men): %d Byte\n", ramDelta);
    
void *pvoid = 0;
    
for (pvoid = malloc(ramDelta);pvoid;pvoid = malloc(ramDelta)) {
        occupy(pvoid);
        ram 
+= ramDelta;
        ramMb 
= (ram / 1024/ 1024;
        
if (ramShow != ramMb) {
            ramShow 
= ramMb;
            printf(
"%d MB 被占用!\n", ramShow);
        }

    }

    system(
"pause");
    free(pvoid);
    
    system(
"pause");
    
return 0;
}


void occupy(void *pram) {
    
*(char *)pram = 1.0;
}


在gcc 3.4.5中编译通过并在xp sp 2 上运行。

posted on 2008-03-27 16:35 yanvenhom 阅读(525) 评论(2)  编辑 收藏 引用 所属分类: C/C++

评论

# re: malloc小记_1  回复  更多评论   

小子.你可是几个月没更新了?

工作很忙吗??
2008-03-28 09:28 | RichardHe

# re: malloc小记_1  回复  更多评论   

@RichardHe
看了看前辈的blog,真多,小弟我算新手。
我没工作,最近在搞学士的论文,我非计算机专业,计算机是我的兴趣,乐在其中。
等做完事继续学习,谢谢大哥的脚印。^_^
2008-03-29 13:35 | yanvenhom

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理