내가 곤혹 스럽습니다. 학교 지정을 위해 작은 데이터 서버에서 작업 중이며,이 반복을 위해 소켓을 통해 통신해야합니다. 그것의 대부분은 작동하지만 valgrind가 불평하는 것이 무엇인지 알 수는 없지만, 모두 그것이 말하고있는 것이 있습니다.Valgrind 배정시 오류가 발생했습니다.
valgrind says;
Conditional jump or move depends on uninitialised value(s)
at 0x4C2ABD9: strlen (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
by 0x510F0EF: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.17)
by 0x4078C9: netreq::cread() (netreq.c:120)
by 0x402585: event(void*) (simpleclient.C:166)
gdb는 프로세스의 동일한 지점에서 SIGPIPE를 수신하고 있습니다.
다음은 불만을 제기하는 기능입니다.
string netreq::cread()
{
char buf[255];
if(read(fd,buf, 255) < 0)
cout << "I cants read dat right, sorry"<<endl;
return (string)buf; //this is line 120 in netreq.c
}
생각? 아무도 비슷한 것을 고쳤습니까? 나는 꽤 많은 일을 시도했지만 아직 운이 없다.
'읽기'기능은 무엇입니까? – 101010
그'read()'호출의 결과를 저장하십시오. 기능이 실패하지 않으면 당신은 그것을 필요로 할 것입니다. 그리고 그 과정에서 그 읽기를 ** 254 **로 제한하고 싶을 수도 있습니다. – WhozCraig
@ 40two, 아마도 POSIX 함수'read'입니다. –