2017-11-07 10 views
0

여기에 정의 된대로 prv_instance_t이라는 experiment_id이라는 구조체가 있습니다.C 프로그램에서 seg 오류를 일으키는 파일 이름을 만듭니다.

변수 experiment_id 변수에서 UART의 직렬 데이터를 저장하는 serial_log이라는 또 다른 변수를 생성하려고합니다. 이 스레드에서 처리 할 싶습니다. 아래와 같이 "_serial_log.txt"experiment_id에 추가하여 시리얼 데이터의 파일 이름을 만듭니다.

int function() { 

prv_serial_logging_thread_params_t serial_logging_thread_params; 
targetP = (prv_instance_t *)lwm2m_list_find(objectP->instanceList, instanceId); 

그런 다음 pthread를 사용하여 스레드를 만듭니다.

나는 더 좋은 방법으로 파일 이름을 만들 수 있습니까? 아마도 버퍼 오버플로를 일으키고 있습니까?

답변

2

serial_logging_thread_params로컬입니다. 함수가 반환되면 범위를 벗어나 사라집니다. 스레드가 계속 실행되는 동안 이런 일이 발생하면 구조체에 대한 포인터가 유효하지 않게됩니다.

malloc을 사용하여 구조를 동적으로 할당하십시오.