如何编写while循环,通过malloc在while循环中分配500kb的内存

时间:2014-10-03 04:04:04

标签: c malloc

我是新手C程序员。我试图通过一次分配内存500kb来测试malloc函数的限制,直到malloc返回null。我尝试了几件事,但没有任何工作。有人会帮我修改我的代码,所以它做了我想要的吗?另外,我应该如何打印出最后一个内存地址?这是我现在拥有的:

#include<stdlib.h>
#include<stdio.h>

int main()
{
    int *p;
    int tf = 1;
    while(tf==1)
    {
        p=(int*) malloc(500*4);
        if(p == NULL)
        {
            tf = 0;
        }
    }
}

2 个答案:

答案 0 :(得分:2)

#include<stdlib.h>
#include<stdio.h>

int main()
{
    int *p;
    int counter = 0;
    while(p != NULL)
    {
        p=(int*) malloc(500*1000);
        counter++;
    }

    printf("%d\n", counter/2);//mem size in MB
    printf("%p\n", p);//address
    return 0;
}

试试这个

答案 1 :(得分:0)

根据您对方法的描述,这里有一些问题。

首先,它一次分配500个字节,而不是500千字节。

其次,没有办法摆脱while循环。所以,即使在malloc开始返回null之后,你也会永远在那里旋转。

最后,这不应该编译,更不用说了,因为torf没有在任何地方声明。

你正走在正确的轨道上,但我真的怀疑你是否真的设法建立了它。