1215.1——动态分配内存的补充realloc
當再次在原來申請的內存基礎上再加內存的時候用realloc,如果第一次分配的內存后面存儲地方夠用,則連著原來的申請,如果不夠用,就重新找到一塊夠用的地方,然后把原來的復制過去
int main(int argc, const char * argv[]) {
? ? char *name = NULL;
? ? int total = 0;
? ? while(1){
? ? ? ? char a = getchar();
? ? ? ? if (a == '\n'){
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? if (name ==NULL) {
? ? ? ? ? ? name = (char*)malloc(1*sizeof(char)); ? //第一次進入的時候是用malloc分配空間
? ? ? ? ? ? if (name ==NULL) {
? ? ? ? ? ? ? ? exit(EXIT_FAILURE);
? ? ? ? ? ? }
? ? ? ? }else{
? ? ? ? ? ? char * temp=NULL;
? ? ? ? ? ? temp = (char *)realloc(name, (total+1)*sizeof(char)); ? //再次進入的時候使用realloc分配空間
? ? ? ? ? ? if (temp ==NULL) {
? ? ? ? ? ? ? ? free(name); ? //如果第二次之后申請內存失敗,要釋放掉之前申請的內存,所以先用temp來申請,如果沒申請成功,釋放掉原來的name。
? ? ? ? ? ? ? ? exit(EXIT_FAILURE);
? ? ? ? ? ? }
? ? ? ? ? ? name =temp;
? ? ? ? }? ? ? ?
? ? ? ? *(name +total) = a; ?// 依次存放進去
? ? ? ? total++;
? ? }
? ? printf("%s\n",name);
? ? free(name);
? ? return 0;
}
轉載于:https://www.cnblogs.com/damonWq/p/5049439.html
總結
以上是生活随笔為你收集整理的1215.1——动态分配内存的补充realloc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 必应聊天周报:导出聊天历史、可视化图表效
- 下一篇: 费改后车险变化