[英]How to allocate memory of a struct?
I am trying to allocate memory and zero it out for the sender struct but I'm not sure if I am doing this correctly. 我正在尝试为发件人结构分配内存并将其归零,但是我不确定是否正确执行了此操作。 I'm trying to learn how to manage memory in C while I am doing this project.
在执行此项目时,我试图学习如何在C中管理内存。 How can I test it to see what I set the memory to?
如何测试以查看设置的内存? And will what I am trying to do work, or is there a better way of doing this?
我会尝试做的工作,还是有更好的方法呢?
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;
}
}
sendQ
is an array member of Sender
, it is not a pointer. sendQ
是Sender
的数组成员,它不是指针。 There is no need for allocating memory using malloc
. 无需使用
malloc
分配内存。 You can use: 您可以使用:
initSend(Sender* sender) {
sender->winSize = -1;
memset(sender->sendQ, 0, sizeof(sender->sendQ));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.