gpt4 book ai didi

c - C 中的结构、内部结构和大小

转载 作者:行者123 更新时间:2023-12-04 10:40:37 25 4
gpt4 key购买 nike

我正在使用 C 为嵌入式、资源受限的设备编程。

我有一个结构,像这样:

typedef struct UjThread{
struct{
UInt32 runInstr;
UInt8* mailbox;
}appBucket;

struct{
UInt32 appId;
UInt32 numInstr;
UInt32 allocMem;
UInt32 eepromStartAddr;
}appContract;

UInt16 spBase; //we use an empty ascending stack
UInt16 spLimit; //also used for "isPtr"
UInt16 localsBase;
UInt32 stack[];

}UjThread;

我为每个对象启动一个线程并分配所需的内存(此结构为 92 字节,但我没有显示所有字段)。但是,有些对象不会使用内部 appContract 和 appBucket 结构,但仍会为这些结构分配内存。

有没有办法避免这种情况?将内部结构指定为可选,或者可能提取这些内部结构的大小并将其从内存分配中减去?

我可以制作两个单独的结构,每种类型的对象一个,但我不想这样做,因为我必须在任何地方调整我的代码才能使用这两种类型的线程。

最佳答案

除了显而易见的 - 使用两个结构之外,我只看到另外两种可能性。要么使用指向单独分配的 appContract 的指针,要么如果您需要的某些数据是互斥的,请使用 union 。

关于c - C 中的结构、内部结构和大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36330023/

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