libevent 2.0.19 - 奇怪的evbuffer_copyout最终的simbols

时间:2012-08-15 14:40:24

标签: c cocoa libevent

我正在使用libevent来做简单的POST http服务器,但我发现了一个奇怪的问题 - evbuffer_copyout写入带有开销的*数据传输数据(每次更改)。 正如你在代码中看到的那样,我通过剪切不必要的符号来修复,但它看起来不像是正确的解决方案。在这里,我收到: enter image description here

bellow是回调代码:

size_t len = evbuffer_get_length(evhttp_request_get_input_buffer(r));
struct evbuffer *in_evb = evhttp_request_get_input_buffer(r);

size_t lenBuffer = evbuffer_get_length(in_evb);

char *data = malloc(len);
evbuffer_remove(in_evb, data, len);
NSString *final = [NSString stringWithCString:data encoding:NSASCIIStringEncoding];
NSString *finalFinal = [final substringWithRange:NSMakeRange(0, len)];

NSLog(@"==>lenBuffer:%zu len:%zu data:%@",lenBuffer,len,finalFinal);
evhttp_add_header(evhttp_request_get_output_headers(r),
                  "Content-Type", "text/html");
evhttp_send_reply(r, 200, "OK", in_evb);
free(data);

1 个答案:

答案 0 :(得分:1)

当你通过malloc分配内存时,它会充满一些垃圾。 你用有用的数据填充这个内存,但它可能不包含字符串终止符'\ 0' 因此,调试器会向您显示从缓冲区中获取的数据以及一些垃圾。