我是新手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;
}
}
}
答案 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没有在任何地方声明。
你正走在正确的轨道上,但我真的怀疑你是否真的设法建立了它。