以下代碼(網絡服務器中的請求 - 響應循環的一部分)大部分時間都在工作,但有時會失敗,因爲客戶端會報告它已經得到了一些奇怪的其他字符串(看似來自本函數內存中附近位置的隨機字節,或空字節)。C++ std:字符串內存模型
string res = "";
if (something) {
res = "ok";
}
if (res.length() > 0) {
send_data((void*) res.c_str(), res.length());
}
在我看來,它似乎都「」和「OK」是不變的STD:字符串和解析度是一個指向其中的任何一個,這樣整個事情應該工作,但顯然事實並非如此,那麼有人可以向我解釋這裏發生了什麼?
您的'send_data()'是否可能是非阻塞的,並且在完成之前破壞'res'? – vhallac 2011-03-22 13:44:32
這也是一個很好的觀點。 – 2011-03-22 13:46:10
這是正確的錢。我在這裏使用0MQ,並且正在試驗發送數據的非複製方式,但顯然在這種情況下無法正常工作。謝謝! – djc 2011-03-22 13:55:37