以下代码(网络服务器中的请求 - 响应循环的一部分)大部分时间都可以工作,但有时会失败,因为客户端会报告它有一些奇怪的其他字符串(看似随机字节来自内存附近的位置)函数或空字节).
string res = "";
if (something) {
res = "ok";
}
if (res.length() > 0) {
send_data((void*) res.c_str(), res.length());
}
Run Code Online (Sandbox Code Playgroud)
在我看来,似乎""和"ok"都是常量的std:字符串,而res是指向其中任何一个的指针,因此整个事情应该有效,但显然情况并非如此,所以可以有人请向我解释这里发生了什么?
您可能忘记发送null-terminator来表示字符串的结尾:
send_data((void*) res.c_str(), res.length()+1);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
580 次 |
最近记录: |