【问题标题】:Use a char array in a std::string in C++11在 C++11 的 std::string 中使用 char 数组
【发布时间】:2015-05-06 11:20:40
【问题描述】:

我不确定这是否安全,当字符串超出范围时会发生什么?:

std::string tmp_str( strdup("wlan0"));

我知道 strdup 使用 malloc 为将由 tmp_string 使用的字符串分配新空间。

我对解决方案不感兴趣,我想知道使用 strdup 是否会有任何问题。

【问题讨论】:

  • 它会泄漏内存。为什么需要 strdup?

标签: c++11 malloc stdstring


【解决方案1】:

std::string 类复制字符串,而不是指向字符串的指针。这意味着strdup 分配的内存将为您的进程永远丢失。

根本没有必要以这种方式使用strdup。除此之外,字符串字面量将在程序的整个生命周期中存在,因此指向它们的指针永远不会失效。

【讨论】:

    猜你喜欢
    • 2014-03-17
    • 2011-10-26
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 2016-06-11
    • 1970-01-01
    • 2012-03-03
    相关资源
    最近更新 更多