我是一名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;
}
}
}
#include<stdlib.h>
#include<stdio.h>
int main()
{
int *p;
int counter = 0;
while(p != NULL)
{
p=(int*) malloc(500*1000);
counter++;
}
printf("%dn", counter/2);//mem size in MB
printf("%pn", p);//address
return 0;
}
试试这个
根据您对方法的描述,这里有一些错误。
首先,这是一次分配500个字节,而不是500千字节。
其次,没有办法打破while循环。所以,即使在malloc开始返回null之后,您也将永远在那里旋转。
最后,这甚至不应该编译,更不用说运行了,因为torf并没有在任何地方声明。
你走在了正确的轨道上,但我很怀疑你是否真的做到了。