美文网首页
C-内存管理

C-内存管理

作者: 小石头呢 | 来源:发表于2019-08-06 00:18 被阅读0次
    • C 语言为内存的分配和管理提供了几个函数。这些函数可以在 <stdlib.h> 头文件中找到。

    • 普通变量的内存是系统自己分配的,所以系统自己负责释放,自己分配的内存空间必须自己释放。

    一.动态分配内存

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    int main() {
       char name[100];
       char *description;
     
       strcpy(name, "Zara Ali");
     
       /* 动态分配内存 */
       description = (char *)malloc( 200 * sizeof(char) );
       if( description == NULL ) {
          fprintf(stderr, "Error - unable to allocate required memory\n");
       }
       else {
          strcpy( description, "Zara ali a DPS student in class 10th");
       }
    
       printf("Name = %s\n", name );
       printf("Description: %s\n", description );
    }
    
    //运行结果
    Name = Zara Ali
    Description: Zara ali a DPS student in class 10th
    

    二.重新调整内存的大小和释放内存

    • 当之前分配的内存空间不够了,或者多了,就需要在之前的基础上重新分配,realloc必须是之前使用malloc分配过的。

    • 自己创建的变量,都应该调用函数 free() 来释放内存。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    int main(){
       char name[100];
       char *description;
     
       strcpy(name, "Zara Ali");
     
       /* 动态分配内存 */
       description = (char *)malloc( 30 * sizeof(char) );
       if( description == NULL ){
          fprintf(stderr, "Error - unable to allocate required memory\n");
       }
       else{
          strcpy( description, "Zara ali a DPS student.");
       }
       /* 假设您想要存储更大的描述信息 */
       description = (char *) realloc( description, 100 * sizeof(char) );
       if( description == NULL ) {
          fprintf(stderr, "Error - unable to allocate required memory\n");
       }
       else{
          strcat( description, "She is in class 10th");
       }
       
       printf("Name = %s\n", name );
       printf("Description: %s\n", description );
     
       /* 使用 free() 函数释放内存 */
       free(description);
    }
    
    //运行结果
    Name = Zara Ali
    Description: Zara ali a DPS student.She is in class 10th
    

    相关文章

      网友评论

          本文标题:C-内存管理

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