gpt4 book ai didi

c - 临时数据存放在哪里(嵌入式C)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:49 25 4
gpt4 key购买 nike

我有一个非常强大的嵌入式 linux 设备,用于使用 C 从各种套接字/fd:s 收集数据。这些数据将被解析、缓冲并传递到 TCP/IP 或 UDP 套接字以转移到其他地方进行长期存储。当已获取足够数量的数据或触发其他一些事件时,最后一步就会发生。

我的问题是:是否有任何理由不缓冲堆上的所有内容(而不是写入/读取某些 linux 文件描述符)

  • 我的设备的唯一用途就是这种类型的数据采集
  • 设备从未用于长期存储

仅使用堆听起来违反直觉,但我真的不明白为什么我们不应该尽可能多地在堆中存储,至少在 RAM 变得稀缺之前。

最佳答案

我不太明白你为什么说“使用堆是违反直觉的”——数百万嵌入式路由器和交换机使用堆来存储和转发队列(我知道你所做的是相似的)。

这在很大程度上取决于您获取的数据。在您的设备发生电源故障或其他重置事件时可以重新获取的任何内容都不需要永久存储。

但是,对于难以或不可能重新获取的数据以及这些有值(value)的数据(例如传感器数据),您可能希望将其推送到一个安全的地方,以防止重置和断电。

另一方面,如果您的数据不是分段的而是面向流的,那么将其存储到文件中可能会容易得多 - 还要注意内存不足的情况和堆内存泄漏可能是真正的麻烦在嵌入式系统中进行调试。

关于c - 临时数据存放在哪里(嵌入式C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40350398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com