#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
main()
{
char str[10];
char *a;
a=(char *)malloc(10*sizeof(char));
gets(a);
//free(a);
puts(a);//结果意外:就算输了入一百个数,照样没事;照样输出;
printf("%s\n",a);
printf("%d\n",_msize(a));
}
问题1:动态内存函数好像没意义啊,我用简单的char str[10],与a=(char *)malloc(10*sizeof(char));他们不都是占用了10个大小内存么;难道malloc的存在就是有些东西只是临时存在一下?用完就释放了,但这样意义何在,比如我建立数组的目的就是要存东西,但考虑到怕浪费内存才想到用malloc,但malloc用free释放后,里面的数据又全没有了。再说也不灵活,我以为malloc会自动境加大小空间,结果还是要给个大小值,那何必!
问题2:a的值没有超,难道malloc的功能只是开了一个首地址,后面超的全部自动放在连续地址上么?
慕无忌1623718
侃侃尔雅
慕码人8056858
相关分类