Я пытаюсь выделить память и обнулить ее для структуры отправителя, но я не уверен, что я делаю это правильно. Я пытаюсь научиться управлять памятью на 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;
}
}
Вы пытаетесь определить функцию внутри 'main()'? Если да, остановитесь прямо там. – EOF
Просто используйте '' calloc' '(http://linux.die.net/man/3/calloc) вместо 'malloc', и вы начнете с обнуленной памяти. Задача решена! – DaoWen
@EOF нет, главное здесь не важно, initSend() может быть в любом другом файле. – Urler