内部に配列を含む構造体の使用法を作成して実装する必要があります。構造体と配列の適切な初期化と割り当てを行う方法は?これが私の現在の実装で、うまくいくようです。ただし、それが適切な方法であり、構造体がどこに割り当てられているか(スタックまたはヒープメモリ上)はわかりません。私見では、mallocを呼び出すと、配列がヒープに格納されますが、残りの構造体メンバーについてはわかりません。これが私の構造体です:
typedef struct {
uint8_t objectSize;
double objectDepth;
} ObjectData;
typedef struct {
ObjectData *objectList;
double startMark;
double endMark;
} MyDataPacket;
構造体を埋めて返す関数は次のとおりです。
void getMyPacket(MyDataPacket *myDataPacket, uint8_t objectNum)
{
myDataPacket->startMark = 10.0;
myDataPacket->endMark = 60.0;
myDataPacket->objectList = malloc(objectNum * sizeof(MyDataPacket));
uint8_t x;
for (x = 0; x < objectNum; x++)
{
myDataPacket->objectList[x].objectSize = x; // just test values
myDataPacket->objectList[x].objectDepth = x; // just test values
}
}
これが関数呼び出し部分です:
uint8_t objectNum = 10;
MyDataPacket myDataPacket;
getMyPacket(&myDataPacket, objectNum);
構造体データが混在してスタックとヒープの両方に配置されていますか、それともすべてが1か所にありますか?