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

为什么使用动态分配内存

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

    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;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 版权声明:本文为 gfson 原创文章,转载请注明出处。注:作者水平有限,文中如有不恰当之处,请予以指正,万分感谢...
    gfson阅读 3,357评论 0 6
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,534评论 3 44
  • 1. 变量 不同类型的变量在内存中占据不同的字节空间。 内存中存储数据的最小基本单位是字节,每一个字节都有一个内存...
    C语言学习阅读 1,334评论 0 4
  • 很多新学C语言的童鞋在用到动态内存分配的时候,对选择哪种分配函数及其有何区别搞不清楚,那么下文就认真的讲讲它们的种...
    Leon_Geo阅读 1,083评论 0 2
  • 今天中午,从延安路商店下台阶打电话的时候,看到了有一位拾荒的人在我们邻居丢弃下的饭盒寻找食物吃,马上停止了电话对他...
    常悟阅读 344评论 2 3