2017-11-07 3 views
0

私のプログラム内のprv_instance_tという構造体は、ここに定義したexperiment_idを含んでいます。cプログラムでファイル名を作成してsegフォールトを発生させます

これからexperiment_id変数私はserial_logという別の変数を作成して、UARTのシリアルデータを保存したいと考えています。私はこれをスレッドで処理したい。以下のように"_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を使用して構造を動的に割り当てます。

関連する問題