#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的功能只是開了一個首地址,后面超的全部自動放在連續地址上么?
3 回答

侃侃爾雅
TA貢獻1801條經驗 獲得超16個贊
malloc就是返回一個由你規定大小的指針,你可以用它動態的創建一些數據,用后要用free把指針指向的地址的空間釋放(刪掉)以節約運行空間。
如
int* p;
p=(int*)malloc(sizeof(int));
*p=55;
printf("%d",*p);
free(p);
另一個calloc()是返回數組指針。
type* p=(strcut type*)calloc(n,size);

慕碼人8056858
TA貢獻1803條經驗 獲得超6個贊
開辟內存。比如 int *p; p=(int *)malloc (100*sizeof(int)); 它開辟100個int單元,即400字節。然后p指向第一個元素。之后也可以用p[0],p[1]
- 3 回答
- 0 關注
- 204 瀏覽
添加回答
舉報
0/150
提交
取消