我正在尝试为发件人结构分配内存并将其清零,但我不确定我是否正确执行此操作。我正在尝试学习如何在进行此项目时管理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;
}
}
答案 0 :(得分:0)
sendQ
是Sender
的数组成员,它不是指针。
无需使用malloc
分配内存。您可以使用:
initSend(Sender* sender) {
sender->winSize = -1;
memset(sender->sendQ, 0, sizeof(sender->sendQ));
}