如何分配结构的内存?

时间:2015-10-17 21:31:09

标签: c memory-management

我正在尝试为发件人结构分配内存并将其清零,但我不确定我是否正确执行此操作。我正在尝试学习如何在进行此项目时管理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;
         }
    }

1 个答案:

答案 0 :(得分:0)

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

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