Запись веб-ответа в HEAP приводит к мусору при печати - PullRequest
0 голосов
/ 27 февраля 2020

Я работаю над Arduino с WiFi-щитом. В настоящее время я делаю веб-запрос на щит. Я пытаюсь использовать malloc() для записи ответа в кучу. Прямо сейчас, при распечатке _buffer, я получаю ответ со всеми заголовками, за которыми следует куча мусора, как показано ниже: Serial output with headers followed by garbage

char *NetConn::capture()
{
    if (_client.available())
    {
        if (_buffer) // RELEASE ANY DATA HELD IN THE BUFFER IF THE BUFFER EXISTS
        {
            free(_buffer);
        }                                                             // KEEP TRACK OF HOW LARGE THE BUFFER CURRENTLY IS TO PREPARE FOR ANY OVERFLOW
        _buffer = (char *)malloc(_client.available() * sizeof(char)); // INITIALIZE THE BUFFER

        Serial.println(_client.available()); // _client.available() returns 550 (size of payload)

        char c;
        int index = 0;
        while (_client.available())
        {
            c = _client.read();
            _buffer[index] = c;

            index++;
        }
        int size = sizeof(_buffer) / sizeof(char);
        Serial.println(size); // This is writing 2 for some reason
    }

    return _buffer;
}

Я должен отметить, что _client является экземпляром Arduino WiFi-клиента.

Я очень плохо знаком с низкоуровневым управлением памятью и пытаюсь получить гр asp всего, что связано с управлением памятью. Я привык работать с комфортом языков высокого уровня; Однако я пытаюсь разветвляться. Пожалуйста, помогите мне понять, что здесь происходит с объяснением, так как я очень новичок. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...