简体   繁体   English

如何分配结构的内存?

[英]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. sendQSender的数组成员,它不是指针。 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM