0
花費整個下午調試一個問題。完全混淆爲什麼我可以從空列表中打印第一個元素。看來這是C++問題或我的程序問題。這似乎c + +隨機指向本地地址,當我嘗試訪問的第一個元素爲什麼我可以在空列表中打印第一個元素?
int main(int argc, char **argv)
{
string crc_command = "ls /tmp/jacknotexist";
list<string> crc_output;
printf("list begin:%s\n", (*(crc_output.begin())).c_str()); // The result is "ls /tmp/jacknotexist". Why???
printf("list size:%d\n", crc_output.size()); // It is zero as expected.
}
因爲C++不牽着你的手,並告訴你,如果你不遵守其規則。你不支付你不使用的東西。 – chris
說實話我得到了一個分割錯誤..反正chris是對的:訪問越界內存是未定義的行爲。標準模式是檢查邊界和**然後**讀取 –
順便說一下,使用'printf'打印size()的結果是不安全的。 '%zu'很有可能是正確的格式說明符,但你不能確定。 – chris