c - 安全结构嵌入式系统

标签 c struct embedded memory-management

我有一个来自服务器的数据包,它在嵌入式系统中被解析。我需要以一种非常有效的方式解析它,避免内存问题,例如重叠、破坏我的内存和其他变量。

数据包具有这种结构“字符串 A:字符串 B:字符串 C”。

例如,这里接收到的数据包由使用分隔符“:”分隔的三部分组成,所有这些部分都必须可以从结构中访问。

哪种方法最有效、最安全。

A.- 创建一个结构,其属性(partA、PartB、PartC)的大小基于避免从数据包源超过此大小的标准,并附加一个索引,其中包含每个部分的长度,以避免提取垃圾,这部分长度指标可以小于或等于300(即:B部分)。

typedef struct parsedPacket_struct {
  char partA[2];int len_partA;
  char partB[300];int len_partB;
  char partC[2];int len_partC;
}parsedPacket;

这里的问题是我在浪费内存,因为每个结构都应该将数据包内容复制到每个结构,有没有办法只保存每个部分的基地址并仍然使用 len_partX。

最佳答案

如何将 (:) 替换为 0,并在末尾添加一个 null - 然后您将传递三个 char *。您将需要处理 0 长度的字符串,但这可能会解决它

关于c - 安全结构嵌入式系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5265714/

相关文章:

c - “VM_EXECUTABLE”未声明

c - 我只能调用一个函数一次来使用指针比较两个数字

c - 在C中将文件(txt)拆分为双数组

ios - 应用程序退出后 Swift Struct bool 值会重置

c - 它出现在 c 中的字符串数组 (null)

C的怪异指针运算2

c - 当在 DLL 或 .so 中调用函数时,当编译器使用对齐和填充进行自己的结构布局时,为什么传递结构是可靠的?

c - Bootstrap 。 ARM CORTEX M0+ 重定位中断表组件错误

c - 是write系统调用减少内存写周期如何处理

java - 在不使用 JNI 的情况下从 Java 调用 native 函数(使用堆栈操作)