昨天写的两段代码作业,运行了半天没出来结果,但是电脑一直运行着,有想搞的可以w...
/*//编写一个程序,让用户决定要录入的整数个数,然后再申请相应的内存空间来存放(要求使用 malloc 函数来申请内存空间)#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int* ptr = NULL;
int num, i;
printf("请输入待录用的个数");
putchar('\n');
scanf_s("%d", &num);
ptr = (int*)malloc(num * sizeof(int));
for (i = 0; i < num; i++)
{
printf("请录用第%d个数:", i + 1);
scanf_s("%d", &ptr);
}
printf("你录用的整数是:");
for (i = 0; i < num; i++)
{
printf("%d", ptr);
}
free(ptr);
putchar('\n');
return 0;
}*/
/*//计算 malloc 函数最大可以申请多少内存才能空间
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
void* block;
int i, count,j=0;
size_t maximum = 0;
size_t blocksize[] = {1024*1024,1024,1};
//下面从大到小依次尝试
//先尝试1024*1024为扩大粒度去申请内存空间
//当malloc返回NULL时,将扩大的粒度缩小为1024继续尝试
//最终精确到1个字节的粒度扩大maximum的尺寸
for(i=0;i<3;i++)
{
for (count = 1;; count++)
{
block = malloc(maximum + blocksize * count);
if (block)
{
printf("%d\n",j++);
maximum += blocksize * count;
free(block);
}
else {
break;
}
}
}
printf("malloc在当下环境申请的最大空间是:%.2fGB\n",maximum*1.0/1024/1024/1024);
return 0;
}
*/
页:
[1]