zoukankan      html  css  js  c++  java
  • strcpy和strdup比较和详解 (转)

    原文:https://blog.csdn.net/koozxcv/article/details/49306751

    strcpy和strdup比较和详解
    函数和功能描述:
    ①extern char *strdup(char *s);

    头文件:string.h

    功能: 将串拷贝到新建的位置处

    说 明:strdup不是标准的c函数。strdup()在内部调用了malloc()为变量分配内存,不需要使用返回的字符串时,需要用free()释放相应的内存空间,否则会造成内存泄漏。
    返回值:返回一个指针,指向为复制字符串分配的空间;如果分配空间失败,则返回NULL值。

     // strdup.c
    
    #include <syslib.h>
    
    #include <string.h>
    
    main() 
    
    { 
    
     char *s="Golden Global View";
    
    char *d;
    
     d=strdup(s);
    
    printf("%s",d);
    
    return 0;
    
    }
    

      

    ②char *strcpy(char* dest, const char *src);

    头文件:#include <string.h>和 #include <stdio.h>

    功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间

    说明:strcpy是标准的C语言标准库函数。src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

    返回值:返回指向dest的指针。

     举例:

     // strcpy.     
    
     #include <syslib.h>
    
     #include <string.h>     
    
     main()
    
      {        
    
    char *s="Golden Global View";
    
    char d[20]; 
    
    printf("%s",d);       
    
     return 0;    
    
      }
    

      

    总结:
    1.strdup不是标准的c函数,strcpy是标准的c函数,使用时注意场合。
    2.strdup可以直接把要复制的内容复制给没有初始化的指针,因为它会自动分配空间给目的指针,strcpy的目的指针一定是已经分配内存的指针。
    3.strdup用完要free()函数释放内存,否则内存泄露 。
    4.使用strcpy必须事先确定src大小,可以先strlen判断src的大小,之后为dest申请空间,之后再strcpy就不会有问题了。
    ————————————————
    版权声明:本文为CSDN博主「koozxcv」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/koozxcv/article/details/49306751

  • 相关阅读:
    mysql常用基本命令
    mysql8.0.13下载与安装图文教程
    k8s ingress 增加跨域配置
    Jenkins 备份恢复插件 thinBackup 使用
    k8s HA master 节点宕机修复
    nginx 跨域问题解决
    mongodb 3.4.24 主从复制
    k8s 线上安装 jenkins并结合 jenkinsfile 实现 helm 自动化部署
    k8s helm 运用与自建helm仓库chartmuseum
    centos6 源码安装 unzip
  • 原文地址:https://www.cnblogs.com/lh03061238/p/12785586.html
Copyright © 2011-2022 走看看