分析C语言strdup函数

Usage of strdup

它的定义在 <string.h> 文件中。
函数原型如下:

char * strdup(const char *str1);

它的作用是制作一个 str1 的副本,但这个副本和 str1 一点关系都没有,也就是说,它是独立的。
由返回值返回 str1 的副本的地址。
但它需要 free(在C++中用 delete)来释放。

Example

#include <string.h>
#include <cassert>
int main()
{
    char* str = "Hello world";
    char* str_dup;
    str_dup = strdup(str);
    assert((str_dup == str) == 0)
}

strdup 的实现

char* strdup(const char* str1)
{
    size_t len = strlen(str1) + 1; // 计算出字符串大小
    char* p = malloc(len); // 申请内存
    
    return p ? memcpy(p, str1, len) : NULL;
}

linux 下编译 boost 喵

$ ./bootstrap.sh --libdir=/home/jingjing/opt/share/lib --includedir=/home/jingjing/opt/share/include
$ ./b2
$ ./b2 install

boost的根目录里面的boost目录就是include喵。
cmake 直接填 boost 的根目录就可以了喵。
这是喵喵给自己看的喵