在 C 程序中创建文件名导致段错误

标签 c segmentation-fault buffer

我的程序中有一个名为 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/

相关文章:

c - g_slice_new 不接受我的结构类型

c - 使用 memcmp() 时出现段错误

c - pthread_join() 期间的段错误

c++ - 尽管有 pop(),如何避免删除 priority_queue::top()?

c - C 中奇怪的输出缓冲行为

javascript - node.js - 将一个字节切片成位

c++ - Windows 屏幕上的渲染缓冲区

c - C 程序的问题(也许可以通过使用数组来解决)

c - 我对字符串的理解有什么问题,即在 C 编程中以 '\0' 元素结尾的字符数组

c - 寻找复制到缓冲区的字符串