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
#include
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 动态分配内存)