You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从空C字符串构造std::string的代码是否存在未定义行为?

代码是否存在未定义行为?

这段代码不会导致未定义行为,具体解释如下:

  1. 首先,strlen("")的返回值是0,实际调用的是std::basic_string的第4个构造函数:basic_string(const CharT* s, size_type count, const Allocator& alloc = Allocator())。
  2. 对于这个构造函数,当count为0时,标准只要求指针s是有效指针(不需要指向可解引用的对象)。这里aptr指向空字符串的首地址,属于有效指针范畴。
  3. 你担心的[aptr, aptr)范围问题,实际上C++标准允许这种空范围的构造场景——此时构造函数不会尝试访问任何内存元素,最终只会创建一个空的std::string对象,不存在越界访问或无效内存操作的情况。

内容的提问来源于stack exchange,提问作者QF0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 05:53:11