Ошибка памяти с malloc - PullRequest
       1

Ошибка памяти с malloc

3 голосов
/ 21 июля 2011

Я всегда получаю либо ошибку malloc ().Вот код:

char *data = malloc(200);
add_data(data, tableO, line);

void add_data(char *data, struct ARP_entryO *tableO, int line)
{
  int i=0;

  while (i < line)
  {
    strcat(data, tableO[i].IPaddr);
    strcat(data, " ");
    strcat(data, tableO[i].MACaddr);
    strcat(data, " ");
    i++;
  }
}

Обычно я посылаю около 50-60 байт.Любая помощь в этом вопросе?

Спасибо

1 Ответ

7 голосов
/ 21 июля 2011

Это потому, что вы не сбрасываете строку в пустую строку. Функция malloc просто выделяет некоторую память, вы объединяете строки, но с некоторым «мусором». Иногда вы можете получить пустую строку, иногда нет.

Решение состоит в том, чтобы хранить пустую строку перед вашим циклом:

data[0] = '\0'; //or data[0] = 0; or data[0] = NULL;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...