내 C 코드에 다소 문제가 있습니다 (이 언어에 다소 익숙 함). ..C pthreads 및 malloc/seg 오류 오류
RTSPClient *clientInfo = (RTSPClient*) malloc(sizeof(RTSPClient));
if (!clientInfo)
{
printf("There wasn't enough memory to fufill the connection.\n");
continue;
}
clientInfo->socket = new_fd;
pthread_create(&thread, NULL, handleClientConnection, (void *) clientInfo);
... RTSPClient 다음
typedef struct {
int socket;
int session_id;
PlaybackTimer* playback_timer;
CvCapture* video;
} RTSPClient;
우리가 구조체에 비디오 필드를 액세스하려고
, 우리는 점점이다: 나는 다음과 같은 코드가 있습니다 seg faults. 명확하게 할당하지 않았지만이 문제를 해결할 수있는 방법이 궁금합니다. 스레드가 시작되기 전에 할당 된 clientInfo 객체에 전역 변수를 유지해야합니까, 아니면 정적으로 할당해야합니까?
도움을 주시면 감사하겠습니다.
당신이 비디오와 playback_timer을 설정하는 가리 키도록? 그것이 의미하는대로 그들은 메모리의 임의의 위치를 가리킨다. –
모르시는 곳의 모든 캐스트를 제거하십시오. 정확히 무엇을하고 있는지 ** 올바른 작동을 위해 ** 캐스트 **가 필요한 이유를 설명 할 수 있습니다. 컴파일러를 꺼내지 말고, 대신에'-Wall -Wextra'를 사용하고 모든 경고를 적절하게 처리하십시오. – Deduplicator
'void openVideo (CvCapture * video, char * file_path) { \t // 비디오 파일을 엽니 다. \t video = cvCaptureFromFile (file_path); \t if (! video) { \t \t printf ("could not open video % s \ n", file_path); \t} } – tuck