美文网首页
C语言实战开发篇-8 动态分配内存

C语言实战开发篇-8 动态分配内存

作者: MRJMORIARTY | 来源:发表于2019-12-18 19:42 被阅读0次

为什么使用动态分配内存

如果使用指针变量接收数据,必须先为这个指针变量分配一片指向的内存空间
有内存空间才能存数据

    name=(char*)malloc(10*sizeof(char));
    if(name==NULL){
        free(name); 
        exit(EXIT_FAILURE);
    } 
    scanf("%s",name);
    printf("%s\n",name);
    realloc(name,20*sizeof(char))//使用realloc动态改变已经分配的大小
    //增加或减少 ,必须释放之前的内存 
    free (name);//使用完毕手动释放内存

常量字符串的内存空间有系统自动分配
在常量区里面分配当程序结束才会被释放
常量区-常量const int a=1
静态区 static
栈 局部变量 int a =10;离开作用域就自动收回
堆 自己申请的内存 malloc calloc realloc,必须自己释放
为什么要动态分配内存:
1.存储的数据,需要延长生命周期
2.一个指针变量需要存储数据,变量本身只能存地址,不能存数据,需要分配内存空间来存储数据
例,用数组存储名字,且不浪费空间

#include<stdio.h>
#include<stdlib.h>
int main()
{
    char*name;
    /*
    如果使用指针变量接收数据,必须先为这个指针变量分配一片指向的内存空间
    有内存空间才能存数据 
    */ 
    name=(char*)malloc(10*sizeof(char));
    while(1){
    scanf("%s",name);
    printf("%s\n",name);
    if(name==NULL){
        free(name); 
    //  exit(EXIT_FAILURE);
    } 
    realloc(name,20*sizeof(char));
    //使用realloc动态改变已经分配的大小
    //增加或减少 ,必须释放之前的内存 
    free(name);
    //使用完毕手动释放内存 
    } 
    
return 0;
}

相关文章

  • C语言实战开发篇-8 动态分配内存

    为什么使用动态分配内存 如果使用指针变量接收数据,必须先为这个指针变量分配一片指向的内存空间有内存空间才能存数据 ...

  • C++ new 和 delete 运算符

    在 C 语言中,动态分配内存用 malloc () 函数,释放内存用 free () 函数。如下所示: 在 C++...

  • C语言_动态分配内存

    1.使用到的知识点:malloc、realloc、free2.使用法则:自己分配的内存空间必须自己释放3.实际运用:

  • C语言的malloc

    为什么C语言要有malloc malloc就是memory allocate动态分配内存,malloc的出现时为了...

  • C语言基础(4)——动态分配内存及文件的相关内容

    本节内容1.动态分配内存2.文件的相关内容3.动态分配内存实战——名字的输入与输出4.结构体 (一)动态分配内存1...

  • C++———动态内存分配

    动态内存分配用于提高内存的利用率,在c语言中使用malloc内置函数动态分配内存,而在c++中使用new运算符进行...

  • C语言-用指针实现内存动态分配

    动态存储分配函数 在C语言中,动态分配内存是通过动态存储分配函数 malloc() 来实现的,其功能是: 在内存的...

  • c++动态分配浅析

    1. c语言中动态分配和释放. 在c中,申请动态内存是使用malloc和free,这两个函数是c的标准库函数,分配...

  • C语言内存分配函数比较

    一、函数介绍 1.1 函数原型 C语言应用程序编程中动态分配内存的函数主要有realloc、malloc、call...

  • malloc从原理到实践

    简介 使用过c语言的都知道malloc是一个动态分配内存的函数malloc的全称是memory allocatio...

网友评论

      本文标题:C语言实战开发篇-8 动态分配内存

      本文链接:https://www.haomeiwen.com/subject/joaunctx.html