首页 > 解决方案 > 将 webresponse 写入 HEAP 会导致打印时出现垃圾

问题描述

我正在研究带有 WiFi 屏蔽的 Arduino。目前,我正在盾牌上发出网络请求。我正在尝试使用malloc()写对堆的响应。现在,当打印出来时_buffer,我得到所有标题的响应,后面跟着一堆垃圾,如下图所示: 带有标头的串行输出,后跟垃圾

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 客户端的一个实例。

我对低级内存管理非常陌生,并且正在尝试掌握整个内存管理的内容。我习惯于使用高级语言带来的舒适感;但是我正在尝试扩展。请帮助我理解这里发生了什么,并解释一下,因为我很新。谢谢!

标签: c++carduino

解决方案


推荐阅读