【发布时间】:2015-05-06 11:20:40
【问题描述】:
我不确定这是否安全,当字符串超出范围时会发生什么?:
std::string tmp_str( strdup("wlan0"));
我知道 strdup 使用 malloc 为将由 tmp_string 使用的字符串分配新空间。
我对解决方案不感兴趣,我想知道使用 strdup 是否会有任何问题。
【问题讨论】:
-
它会泄漏内存。为什么需要 strdup?
我不确定这是否安全,当字符串超出范围时会发生什么?:
std::string tmp_str( strdup("wlan0"));
我知道 strdup 使用 malloc 为将由 tmp_string 使用的字符串分配新空间。
我对解决方案不感兴趣,我想知道使用 strdup 是否会有任何问题。
【问题讨论】:
std::string 类复制字符串,而不是指向字符串的指针。这意味着strdup 分配的内存将为您的进程永远丢失。
根本没有必要以这种方式使用strdup。除此之外,字符串字面量将在程序的整个生命周期中存在,因此指向它们的指针永远不会失效。
【讨论】: