亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么就算輸了入一百個數,照樣沒事;照樣輸出;

為什么就算輸了入一百個數,照樣沒事;照樣輸出;

C
呼如林 2023-04-01 14:10:33
#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 回答

?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

malloc就是用來進行動態分配的,由程序員自己分配內存,正常情況下一般變量是由系統自動分配到棧內存中的,而malloc也是動態在堆中分配

查看完整回答
反對 回復 2023-04-03
?
侃侃爾雅

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);

查看完整回答
反對 回復 2023-04-03
?
慕碼人8056858

TA貢獻1803條經驗 獲得超6個贊

開辟內存。比如 int *p; p=(int *)malloc (100*sizeof(int)); 它開辟100個int單元,即400字節。然后p指向第一個元素。之后也可以用p[0],p[1]

查看完整回答
反對 回復 2023-04-03
  • 3 回答
  • 0 關注
  • 204 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號