为什么我可以打印空列表中的第一个元素
Why I can print the first element in an empty list?
花一下午的时间调试一个问题。完全困惑为什么我可以从一个空列表中打印第一个元素。这似乎是c++问题或我的程序问题。当我试图访问第一个元素
时,c++似乎随机指向本地地址int main(int argc, char **argv)
{
string crc_command = "ls /tmp/jacknotexist";
list<string> crc_output;
printf("list begin:%sn", (*(crc_output.begin())).c_str()); // The result is "ls /tmp/jacknotexist". Why???
printf("list size:%dn", crc_output.size()); // It is zero as expected.
}
结果为"ls/tmp/jackknoexist "。为什么? ?
实际上,结果是未定义的行为:即使列表是空的,它的begin()
函数返回一些值(恰好等于end()
函数返回的值)。当你对这个迭代器解引用时,它又会产生一些值。此时,行为是未定义的,程序可能在任何其他平台上崩溃。
crc_command
变量的内容一致。
相关文章:
- 如何实现 Front() 方法以返回模板化双向链表C++的第一个元素?
- 对的排序向量 (std::vector<pair<int, int>>) 按对的第一个元素搜索并更新第二个元素值
- C++ queue.front();为什么不从第一个元素开始呢?
- 指向数组基址的指针而不是指向第一个元素的指针有什么优点?
- 静态堆栈函数不会 1) 输入第一个元素 2)添加新元素时识别旧元素
- 从队列中删除第一个元素C++
- 如果第一个元素包含任何零,则我的程序以不希望的方式运行
- 为什么数组不打印第一个元素?
- 在数组中显示第一个元素用户输入
- 消除集合的第一个元素
- 为什么指向矢量第一个元素的指针会丢失?
- 如何打印出常量字符串的第一个元素?
- 读取数组的第一个元素还是第 4000 个元素更快?
- 如何在数组的一部分中查找特定值的第一个元素
- 对数组进行排序的算法,先是第一个元素,然后是前 2 个元素,然后是前 3 个元素,依此类推
- 访问指向对象指针向量的指针的第一个元素?
- 引用保留向量中的第一个元素
- 指向数组的指针是否应该等于指向其第一个元素的指针?
- 尝试将参数包的第一个元素作为函数调用,并将包的其余部分作为参数传递给它
- 代码是否有效.如果我想显示第一个元素?如果不是,那么 s.begin() 会返回什么?