有谁知道 std::string.assign(NULL) 的行为是什么?分配 NULL(使用运算符)或从 NULL 构造是未定义的。是否同样适用于此功能?
问问题
149 次
2 回答
4
该标准在 21.4.6.3 第 12 段中这样说:
要求:s 指向一个至少包含 traits::length(s) + 1 个 charT 元素的数组。
在性格特征要求表62中说:
X::length(p) std::size_t 产生:最小的 i 使得 X::eq(p[i],charT()) 为真。线性的
这意味着traits::length()
将取消引用s
,因此s
不能是指向 null 的指针。你会得到未定义的行为。
于 2013-11-11T01:34:58.397 回答
1
从 NULL“C 字符串”分配 C++ 字符串是未定义的行为,因为空指针实际上根本不指向 C 字符串。我找不到任何参考说 std::string 应该检查 NULL——你需要自己做。
于 2013-11-11T01:32:16.873 回答