gpt4 book ai didi

c - 如何分配结构体的内存?

转载 作者:行者123 更新时间:2023-11-30 17:09:39 25 4
gpt4 key购买 nike

我正在尝试为发送者结构分配内存并将其清零,但我不确定我是否正确执行了此操作。在做这个项目时,我正在尝试学习如何用 C 管理内存。我如何测试它以查看我将内存设置为什么?我想做的事情会起作用吗?或者有更好的方法吗?

typedef unsigned char uchar;

typedef struct {
uchar Seq;
uchar Ack;
uchar Flags;
} Header;

#define FRAME_PAYLOAD_SIZE 50
struct Frame_t
{
Header header;
char data[FRAME_PAYLOAD_SIZE];
uchar CRC;
};
typedef struct Frame_t Frame;

struct Sender
{
uchar winSize;

struct sendSlot {
struct timeval timeout;
Frame msg;
} sendQ[5];
};


initSend(Sender* sender) {
sender->winSize = -1;

char* send_buf = (char*) malloc(5 * sizeof(sender->sendQ[0]));
memset(send_buf, 0, 5 * sizeof(sender->sendQ[0]));
int i;
for (i=0; i<sizeof(sender->sendQ)/sizeof(sender->sendQ[0]); i++) {
memset(sender->sendQ[i].timeout, 0, sizeof(struct timeval));
sender->sendQ = NULL;
}
}

最佳答案

sendQSender的数组成员,它不是指针。不需要使用malloc分配内存。您可以使用:

initSend(Sender* sender) {
sender->winSize = -1;
memset(sender->sendQ, 0, sizeof(sender->sendQ));
}

关于c - 如何分配结构体的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33191801/

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