我的程序中有一个名为 prv_instance_t
的结构,其中包含此处定义的 experiment_id
。
我想从这个 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 创建一个线程。
我遇到了段错误,我能否以更好的方式创建文件名,也许我导致了缓冲区溢出?
最佳答案
serial_logging_thread_params
是一个本地 变量。一旦函数返回,它将超出范围并消失。如果在线程仍在运行时发生这种情况,则指向该结构的指针将变为无效。
使用malloc
动态分配结构。
关于在 C 程序中创建文件名导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47152741/